Added the DataType2Text function to convert a datatype structure into
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTComponentHandler.h
CommitLineData
f23a6e1a 1// @(#) $Id$
2
3#ifndef ALIHLTCOMPONENTHANDLER_H
4#define ALIHLTCOMPONENTHANDLER_H
5/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6 * See cxx source for full Copyright notice */
7
8/* AliHltcomponentHandler
9 handler of HLT processing components
10 */
11
12#include "TObject.h"
13#include "AliHLTDataTypes.h"
5ec8e281 14#include "AliHLTLogging.h"
f23a6e1a 15
16class AliHLTComponent;
17struct AliHLTComponentEnvironment;
18struct AliHLTComponent_DataType;
19
20typedef void* AliHLTLibHandle;
21
5ec8e281 22class AliHLTComponentHandler : public AliHLTLogging {
f23a6e1a 23 public:
24 AliHLTComponentHandler();
25 virtual ~AliHLTComponentHandler();
26
27 void SetEnvironment(AliHLTComponentEnvironment* pEnv);
28
29 // Load a component shared library
30 int LoadLibrary( const char* libraryPath );
31 int UnloadLibrary( const char* libraryPath );
32
33 /* Component registration funcions
34 * registration is done by passing a sample object of the component to the handler
35 * the object has to be valid during the whole runtime and should thus be a global object
36 */
37 // Schedule a component for registration, full registration will be done
38 // after successfull loading of the shared library
39 int ScheduleRegister(AliHLTComponent* pSample );
40
41 // Register a component with the list of available components
42 int RegisterComponent(AliHLTComponent* pSample );
43 int DeregisterComponent( const char* componentID );
44
45 // Find the ID of a component with the given output data
46 // prevType can be used to iterate if there are multiple components with the same output data type.
47 const char* FindComponentType( AliHLTComponent_DataType, const char* prevType = NULL ) { return NULL;}
48
49 // Create a component of the given name
50 int CreateComponent( const char* componentType, void* environ_param, int argc, const char** argv, AliHLTComponent*& component );
51 int CreateComponent( const char* componentType, void* environ_param, AliHLTComponent*& component ) {
52 return CreateComponent( componentType, environ_param, 0, NULL, component );
53 }
54
55 /* print registered components to stdout
56 */
57 void List();
58 protected:
f23a6e1a 59
60 private:
61 /* find a component
62 return index
63 */
64 int FindComponentIndex(const char* componentID);
65
66 /* find a component
67 return descriptor
68 */
69 AliHLTComponent* FindComponent(const char* componentID);
70
71 int InsertComponent(AliHLTComponent* pSample);
72
73 // close all libraries
74 int UnloadLibraries();
75
76 /* list of registered components
77 */
78 vector<AliHLTComponent*> fComponentList;
79
80 /* list of scheduled components
81 */
82 vector<AliHLTComponent*> fScheduleList;
83
84 /* list of libraries
85 */
86 vector<AliHLTLibHandle> fLibraryList;
87
88 AliHLTComponentEnvironment fEnvironment;
89
90 ClassDef(AliHLTComponentHandler, 0)
fa2e9b7c 91
f23a6e1a 92 };
93#endif
94