]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/BASE/AliHLTModuleAgent.cxx
Ignoring temporary files
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTModuleAgent.cxx
index adf398ca36c18a957d0540f7ddefd6f62f89d066..169878eb1878618e3d7b03696fcf96fbbc0e0ab0 100644 (file)
@@ -1,10 +1,11 @@
 // @(#) $Id$
 
 /**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
  *                                                                        *
- * Authors: Matthias Richter <Matthias.Richter@ift.uib.no>                *
- *          for The ALICE Off-line Project.                               *
+ * Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
+ *                  for The ALICE HLT Project.                            *
  *                                                                        *
  * Permission to use, copy, modify and distribute this software and its   *
  * documentation strictly for non-commercial purposes is hereby granted   *
     @note   The class is used in Offline (AliRoot) context
 */
 
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+
 #include "AliHLTModuleAgent.h"
+#include "AliHLTOUTHandler.h"
 
 /** ROOT macro for the implementation of ROOT specific class methods */
 ClassImp(AliHLTModuleAgent)
 
-AliHLTModuleAgent::AliHLTModuleAgent()
+AliHLTModuleAgent::AliHLTModuleAgent(const char* id)
+  :
+  fpNext(NULL),
+  fpComponentHandler(NULL),
+  fModuleId(id)
 {
   // see header file for class documentation
   // or
@@ -37,24 +49,18 @@ AliHLTModuleAgent::AliHLTModuleAgent()
   Register(this);
 }
 
-AliHLTModuleAgent::AliHLTModuleAgent(const AliHLTModuleAgent&)
-  :
-  TObject(),
-  AliHLTLogging()
-{
-  // see header file for function documentation
-}
+const AliHLTModuleAgent::AliHLTOUTHandlerDesc AliHLTModuleAgent::fgkVoidHandlerDesc;
 
-AliHLTModuleAgent& AliHLTModuleAgent::operator=(const AliHLTModuleAgent&)
+AliHLTModuleAgent::~AliHLTModuleAgent()
 {
   // see header file for function documentation
-  return *this;
+  Unregister(this);
 }
 
-AliHLTModuleAgent::~AliHLTModuleAgent()
+const char* AliHLTModuleAgent::GetModuleId() const
 {
   // see header file for function documentation
-  Unregister(this);
+  return fModuleId.Data();
 }
 
 void AliHLTModuleAgent::PrintStatus(const char* agent)
@@ -62,7 +68,7 @@ void AliHLTModuleAgent::PrintStatus(const char* agent)
   // see header file for function documentation
   AliHLTLogging log;
  if (agent) {
-   AliHLTModuleAgent* pCurrent=fAnchor;
+   AliHLTModuleAgent* pCurrent=fgAnchor;
    while (pCurrent!=NULL && strcmp(pCurrent->GetName(), agent)!=0) pCurrent=pCurrent->fpNext;
    if (pCurrent) {
      log.Logging(kHLTLogInfo, "AliHLTModuleAgent::PrintStatus", "module agents", 
@@ -72,7 +78,7 @@ void AliHLTModuleAgent::PrintStatus(const char* agent)
                 "agent %s not found", agent);
    }
   } else {
-   AliHLTModuleAgent* pCurrent=fAnchor;
+   AliHLTModuleAgent* pCurrent=fgAnchor;
    log.Logging(kHLTLogInfo, "AliHLT", "", "-----------------------");
    log.Logging(kHLTLogInfo, "AliHLT", "", "available module agents");
    if (pCurrent==NULL)
@@ -87,65 +93,113 @@ void AliHLTModuleAgent::PrintStatus(const char* agent)
   }
 }
 
-int AliHLTModuleAgent::CreateConfigurations(AliHLTConfigurationHandler* handler,
-                                           AliRunLoader* runloader) const
+int AliHLTModuleAgent::CreateConfigurations(AliHLTConfigurationHandler* /*handler*/,
+                                           AliRawReader* /*rawReader*/,
+                                           AliRunLoader* /*runloader*/) const
 {
   // default method, nothing to be done, child classes can overload
-  if (handler==NULL && runloader==NULL) {
-    // get rid of 'unused parameter' warning
-  }
   return 0;
 }
 
-const char* AliHLTModuleAgent::GetLocalRecConfigurations(AliRunLoader* runloader) const
+const char* AliHLTModuleAgent::GetReconstructionChains(AliRawReader* /*rawReader*/,
+                                                      AliRunLoader* /*runloader*/) const
 {
   // default method, nothing to be done, child classes can overload
-  if (runloader==NULL) {
-    // get rid of 'unused parameter' warning
-  }
   return NULL;
 }
 
-const char* AliHLTModuleAgent::GetEventRecConfigurations(AliRunLoader* runloader) const
+const char* AliHLTModuleAgent::GetRequiredComponentLibraries() const
 {
   // default method, nothing to be done, child classes can overload
-  if (runloader==NULL) {
-    // get rid of 'unused parameter' warning
-  }
   return NULL;
 }
 
-const char* AliHLTModuleAgent::GetRequiredComponentLibraries() const
+int AliHLTModuleAgent::GetHandlerDescription(AliHLTComponentDataType /*dt*/,
+                                            AliHLTUInt32_t /*spec*/,
+                                            AliHLTOUTHandlerDesc& /*desc*/) const
+{
+  // default method, nothing to be done, child classes can overload
+  return 0;
+}
+
+AliHLTOUTHandler* AliHLTModuleAgent::GetOutputHandler(AliHLTComponentDataType /*dt*/,
+                                                     AliHLTUInt32_t /*spec*/)
 {
   // default method, nothing to be done, child classes can overload
   return NULL;
 }
 
-int AliHLTModuleAgent::RegisterComponents(AliRunLoader* runloader) const
+int AliHLTModuleAgent::DeleteOutputHandler(AliHLTOUTHandler* pInstance)
 {
-  if (runloader==NULL) {
-    // get rid of 'unused parameter' warning
+  // default method, simply deletes object
+  if (pInstance) return -EINVAL;
+  delete pInstance;
+  return 0;
+}
+
+
+// likely to be moved to AliHLTOUTHandler
+// AliRawStream* AliHLTModuleAgent::GetRawStream(AliHLTComponentDataType /*dt*/,
+//                                           AliHLTUInt32_t /*spec*/,
+//                                           const AliHLTOUT* /*pData*/) const
+// {
+//   // default method, nothing to be done, child classes can overload
+//   return NULL;
+// }
+
+int AliHLTModuleAgent::ActivateComponentHandler(AliHLTComponentHandler* pHandler)
+{
+  // see header file for function documentation
+  int iResult=0;
+  if (pHandler==NULL) {
+    if (fpComponentHandler!=NULL) {
+      // reset and think about deregistration
+      fpComponentHandler=NULL;
+      HLTWarning("deregistration of components not yet implemented");
+    }
+    return 0;
+  }
+  if (fpComponentHandler!=NULL) {
+    if (pHandler!=fpComponentHandler) {
+      HLTError("only one component handler can be activated per agent");
+      return -EINVAL;
+    }
+    return 0;
   }
+  if ((iResult=RegisterComponents(pHandler))>=0) {
+    fpComponentHandler=pHandler;
+  }
+  return iResult;
+}
+
+int AliHLTModuleAgent::RegisterComponents(AliHLTComponentHandler* /*pHandler*/) const
+{
   // default method, nothing to be done, child classes can overload
   return 0;
 }
 
-AliHLTModuleAgent* AliHLTModuleAgent::fAnchor=NULL;
-AliHLTModuleAgent* AliHLTModuleAgent::fCurrent=NULL;
-int AliHLTModuleAgent::fCount=0;
+AliHLTModulePreprocessor* AliHLTModuleAgent::GetPreprocessor()
+{
+  // default method, nothing to be done, child classes can overload
+  return NULL;
+}
+
+AliHLTModuleAgent* AliHLTModuleAgent::fgAnchor=NULL;
+AliHLTModuleAgent* AliHLTModuleAgent::fgCurrent=NULL;
+int AliHLTModuleAgent::fgCount=0;
 
 AliHLTModuleAgent* AliHLTModuleAgent::GetFirstAgent()
 {
   // see header file for function documentation
-  fCurrent=fAnchor;
-  return fAnchor;
+  fgCurrent=fgAnchor;
+  return fgAnchor;
 }
 
 AliHLTModuleAgent* AliHLTModuleAgent::GetNextAgent()
 {
   // see header file for function documentation
-  if (fCurrent!=NULL) fCurrent=fCurrent->fpNext;
-  return fCurrent;
+  if (fgCurrent!=NULL) fgCurrent=fgCurrent->fpNext;
+  return fgCurrent;
 }
 
 int AliHLTModuleAgent::Register(AliHLTModuleAgent* pAgent)
@@ -153,14 +207,14 @@ int AliHLTModuleAgent::Register(AliHLTModuleAgent* pAgent)
   // see header file for function documentation
   AliHLTLogging log;
   if (!pAgent) return -EINVAL;
-  if (fAnchor==NULL) {
-    fAnchor=pAgent;
+  if (fgAnchor==NULL) {
+    fgAnchor=pAgent;
   } else {
-    pAgent->fpNext=fAnchor;
-    fAnchor=pAgent;
+    pAgent->fpNext=fgAnchor;
+    fgAnchor=pAgent;
   }
   //  log.Logging(kHLTLogDebug, "AliHLTModuleAgent::Register", "", "module agent %p registered", pAgent);
-  fCount++;
+  fgCount++;
   return 0;    
 }
 
@@ -169,21 +223,21 @@ int AliHLTModuleAgent::Unregister(AliHLTModuleAgent* pAgent)
   // see header file for function documentation
   AliHLTLogging log;
   if (!pAgent) return -EINVAL;
-  fCurrent=NULL;
+  fgCurrent=NULL;
   AliHLTModuleAgent* prev=NULL;
-  AliHLTModuleAgent* handler=fAnchor;
+  AliHLTModuleAgent* handler=fgAnchor;
   while (handler!=NULL && handler!=pAgent) {
     prev=handler;
     handler=handler->fpNext;
   }
   if (handler) {
     if (prev==NULL) {
-      fAnchor=handler->fpNext;
+      fgAnchor=handler->fpNext;
     } else {
       prev->fpNext=handler->fpNext;
     }
-    log.Logging(kHLTLogDebug, "AliHLTModuleAgent::Unregister", "", "module agent %p removed", pAgent);
-    fCount--;
+    //log.Logging(kHLTLogDebug, "AliHLTModuleAgent::Unregister", "", "module agent %p removed", pAgent);
+    fgCount--;
   }
   return 0;
 }