]>
Commit | Line | Data |
---|---|---|
f23a6e1a | 1 | // @(#) $Id$ |
2 | ||
3 | #ifndef ALIHLTSYSTEM_H | |
4 | #define ALIHLTSYSTEM_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 | global HLT module management | |
10 | */ | |
11 | ||
12 | ||
13 | #include "AliL3RootTypes.h" | |
5ec8e281 | 14 | #include "AliHLTLogging.h" |
15 | #include <TList.h> | |
f23a6e1a | 16 | |
5ec8e281 | 17 | class AliHLTComponentHandler; |
18 | class AliHLTConfiguration; | |
85465857 | 19 | class AliHLTConfigurationHandler; |
5ec8e281 | 20 | class AliHLTTask; |
f23a6e1a | 21 | |
5ec8e281 | 22 | class AliHLTSystem : public AliHLTLogging { |
23 | public: | |
f23a6e1a | 24 | AliHLTSystem(); |
25 | virtual ~AliHLTSystem(); | |
26 | ||
3b35e87c | 27 | /* this will change later |
28 | */ | |
f23a6e1a | 29 | AliHLTComponentHandler* fpComponentHandler; |
85465857 | 30 | AliHLTConfigurationHandler* fpConfigurationHandler; |
f23a6e1a | 31 | |
5ec8e281 | 32 | /* add a configuration to the end of the list |
33 | */ | |
34 | int AddConfiguration(AliHLTConfiguration* pConf); | |
35 | ||
36 | /* add a configuration to the list after the specified configuration | |
37 | */ | |
38 | int InsertConfiguration(AliHLTConfiguration* pConf, AliHLTConfiguration* pPrec); | |
39 | ||
40 | /* remove a configuration from the list | |
41 | */ | |
42 | int DeleteConfiguration(AliHLTConfiguration* pConf); | |
43 | ||
3b35e87c | 44 | /* build a task list from a configuration object |
45 | * This method is used to build the tasks from the 'master' configuration | |
46 | * objects which are added to the HLT system handler. This is an iterative | |
47 | * process since the task might depend upon other configurations. For each | |
48 | * configuration object which has not yet been converted into a task, the | |
49 | * method will be called iteratively. Finally, after building all tasks which | |
50 | * the current one depends on have been created, the task is inserted to the | |
51 | * list of tasks with the InsertTask method. | |
5ec8e281 | 52 | */ |
53 | int BuildTaskList(AliHLTConfiguration* pConf); | |
54 | ||
3b35e87c | 55 | /* clean the list of tasks and delete all the task objects |
56 | */ | |
5ec8e281 | 57 | int CleanTaskList(); |
58 | ||
3b35e87c | 59 | /* insert a task to the task list |
60 | * the method first checks whether all dependencies are resolved (i.e. exist | |
61 | * already in the task list). During this iteration the cross links between the | |
62 | * tasks are set as well. If all dependencies are resolved, the task is added | |
63 | * at the end of the list. | |
64 | */ | |
5ec8e281 | 65 | int InsertTask(AliHLTTask* pTask); |
66 | ||
3b35e87c | 67 | /* find a task with an id |
68 | * NOTE: 'id' denotes a CONFIGURATION, not a COMPONENT | |
69 | */ | |
5ec8e281 | 70 | AliHLTTask* FindTask(const char* id); |
71 | ||
3b35e87c | 72 | /* print the task list |
73 | */ | |
5ec8e281 | 74 | void PrintTaskList(); |
75 | ||
76 | /* run the task list | |
77 | */ | |
78 | int Run(); | |
79 | ||
80 | protected: | |
81 | int ProcessTask(); | |
82 | int StartEvent(); | |
83 | int ProcessEvent(); | |
84 | int StopEvent(); | |
85 | ||
86 | private: | |
87 | TList fConfList; | |
88 | int fbListChanged; | |
89 | ||
90 | TList fTaskList; | |
f23a6e1a | 91 | |
5ec8e281 | 92 | private: |
93 | ClassDef(AliHLTSystem, 0); | |
f23a6e1a | 94 | }; |
95 | #endif | |
96 |