]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/BASE/AliHLTModuleAgent.h
bugfix 88038: inconsistent handling of reference counters in library manager
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTModuleAgent.h
index e8db15bfcaa2e2cd95bf4271ab147b15a2baf736..ca1c8030363ff42de5e7c6572f37a4700bc3fc5d 100644 (file)
@@ -20,6 +20,7 @@
 // or
 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
 
+#include <string>
 #include <TObject.h>
 #include <TList.h>
 #include <TString.h>
@@ -141,6 +142,11 @@ class AliHLTModuleAgent : public TObject, public AliHLTLogging {
    */
   static AliHLTModuleAgent* GetNextAgent();
 
+  /**
+   * Get string of blank separated Module Ids
+   */
+  static string GetAgentIds();
+
   /**
    * Activate a component handler for this agent.
    * The @ref RegisterComponents method will be called in order to allow
@@ -149,7 +155,7 @@ class AliHLTModuleAgent : public TObject, public AliHLTLogging {
    * invocation. In the current stage of development, only one handler
    * can be activated per agent. This is sufficient for the current
    * operation, but can be extended.
-   * @param pHandler  [in] the component handler instance
+   * @param [in] pHandler  the component handler instance
    */
   int ActivateComponentHandler(AliHLTComponentHandler* pHandler);
 
@@ -165,9 +171,9 @@ class AliHLTModuleAgent : public TObject, public AliHLTLogging {
    * is always NULL and the raw gives access to data. The configurations
    * can adapt to the two cases.
    *
-   * @param handler   [in] the configuration handler
-   * @param rawReader [in] AliRoot RawReader instance 
-   * @param runloader [in] AliRoot runloader
+   * @param [in] handler   the configuration handler
+   * @param [in] rawReader AliRoot RawReader instance 
+   * @param [in] runloader AliRoot runloader
    * @return neg. error code if failed
    */
   virtual int CreateConfigurations(AliHLTConfigurationHandler* handler,
@@ -180,8 +186,8 @@ class AliHLTModuleAgent : public TObject, public AliHLTLogging {
    * described by the last configuration(s) in the chain. 
    * The agent can adapt the configurations to be registered to the current
    * AliRoot setup by checking the run loader and the raw reader.
-   * @param rawReader [in] AliRoot RawReader instance 
-   * @param runloader [in] AliRoot runloader
+   * @param [in] rawReader AliRoot RawReader instance 
+   * @param [in] runloader AliRoot runloader
    * @return string containing the top configurations separated by blanks
    */
   virtual const char* GetReconstructionChains(AliRawReader* rawReader=NULL,
@@ -205,10 +211,16 @@ class AliHLTModuleAgent : public TObject, public AliHLTLogging {
    * - @ref AliHLTComponentHandler::AddComponent                           <br>
    *        Same functionality but handler deletes the object at the end.
    *
-   * @param pHandler  [in] instance of the component handler          
+   * @param [in] pHandler  instance of the component handler          
    */
   virtual int RegisterComponents(AliHLTComponentHandler* pHandler) const;
 
+  /**
+   * Define QA plugins
+   * @return blank separated list of class names
+   */
+  virtual const char* GetQAPlugins() const;
+
   /**
    * IDs for output handlers.
    * The agent can provide output handlers in order to treat the output
@@ -274,6 +286,13 @@ class AliHLTModuleAgent : public TObject, public AliHLTLogging {
     bool operator==(const AliHLTOUTHandlerType handlerType) const {
       return fHType==handlerType;
     }
+    /**
+     * Two descriptors are equal if all members match.
+     */
+    bool operator==(const AliHLTOUTHandlerDesc& desc) const {
+      return fDt==desc.fDt && fHType==desc.fHType && fModule==desc.fModule;
+    }
+
     operator AliHLTOUTHandlerType() {return fHType;}
     operator AliHLTComponentDataType() {return fDt;}
 
@@ -296,9 +315,9 @@ class AliHLTModuleAgent : public TObject, public AliHLTLogging {
    * - details how it will handle it, mainly the type of the handler
    *   @ref AliHLTOUTHandlerType
    * 
-   * @param dt        [in] data type of the block
-   * @param spec      [in] specification of the block
-   * @param desc      [out] handler description
+   * @param [in] dt        data type of the block
+   * @param [in] spec      specification of the block
+   * @param [out] desc      handler description
    * @return 1 if the agent can provide a handler, 0 if not
    */
   virtual int GetHandlerDescription(AliHLTComponentDataType dt,
@@ -314,8 +333,8 @@ class AliHLTModuleAgent : public TObject, public AliHLTLogging {
    * The framework first collects the handlers for all data blocks, and
    * calls the @ref AliHLTOUTHandler::ProcessData method afterwords for
    * each handler.
-   * @param dt        [in] data type of the block
-   * @param spec      [in] specification of the block
+   * @param [in] dt        data type of the block
+   * @param [in] spec      specification of the block
    * @return pointer to handler
    */
   virtual AliHLTOUTHandler* GetOutputHandler(AliHLTComponentDataType dt,
@@ -323,19 +342,19 @@ class AliHLTModuleAgent : public TObject, public AliHLTLogging {
 
   /**
    * Delete an HLTOUT handler.
-   * Even if the agent returned the handler several times, this is the
-   * final cleanup. The framwork makes sure that the handler is not
-   * used any further outside the agent. The default implementation just
-   * deltetes the object.
+   * This is the final cleanup. The framwork makes sure that the handler is
+   * not used any further outside the agent. Even if the agent returned the
+   * same handler several times, cleanup is invoked only once. The default
+   * implementation just deletes the object.
    * @param pInstance      pointer to handler
    */
   virtual int DeleteOutputHandler(AliHLTOUTHandler* pInstance);
 
   /**
    * Get raw stream for a data block.
-   * @param dt        [in] data type of the block
-   * @param spec      [in] specification of the block
-   * @param pData     [in] data control object
+   * @param [in] dt        data type of the block
+   * @param [in] spec      specification of the block
+   * @param [in] pData     data control object
    * @return Rawstream object, NULL if no Rawstream available for data type/spec
    */
   // this method is likely to be moved to a specific implementation