changed include paths
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTSystem.h
CommitLineData
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 17class AliHLTComponentHandler;
18class AliHLTConfiguration;
85465857 19class AliHLTConfigurationHandler;
5ec8e281 20class AliHLTTask;
f23a6e1a 21
5ec8e281 22class 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