#ifndef ALIHLTCOMPONENTHANDLER_H
#define ALIHLTCOMPONENTHANDLER_H
#include <vector>
#include "AliHLTDataTypes.h"
#include "AliHLTLogging.h"
using std::vector;
class AliHLTComponent;
class AliHLTModuleAgent;
struct AliHLTAnalysisEnvironment;
struct AliHLTComponentDataType;
class AliHLTComponentHandler : public AliHLTLogging {
public:
AliHLTComponentHandler();
AliHLTComponentHandler(AliHLTAnalysisEnvironment* pEnv);
virtual ~AliHLTComponentHandler();
static AliHLTComponentHandler* CreateHandler();
int Destroy();
enum TLibraryMode {kDynamic, kStatic};
void SetEnvironment(AliHLTAnalysisEnvironment* pEnv);
const AliHLTAnalysisEnvironment* GetEnvironment() const {return &fEnvironment;}
TLibraryMode SetLibraryMode(TLibraryMode mode);
int LoadLibrary( const char* libraryPath, int bActivateAgents=1);
AliHLTfctVoid FindSymbol(const char* library, const char* symbol);
int UnloadLibrary( const char* libraryPath );
int ScheduleRegister(AliHLTComponent* pSample );
int RegisterComponent(AliHLTComponent* pSample);
int AddComponent(AliHLTComponent* pSample);
int RegisterScheduledComponents();
int DeregisterComponent( const char* componentID );
int AddStandardComponents();
int DeleteOwnedComponents();
int CreateComponent( const char* componentID, void* pEnvParam,
int argc, const char** argv, AliHLTComponent*& component);
int CreateComponent(const char* componentID, AliHLTComponent*& component );
int CreateComponent( const char* componentID, void* pEnvParam,
AliHLTComponent*& component )
{
return CreateComponent( componentID, pEnvParam, 0, NULL, component );
}
int SetRunDescription(const AliHLTRunDesc* desc, const char* runType);
int HasOutputData( const char* componentID);
void List();
int AnnounceVersion();
int FindComponentIndex(const char* componentID);
protected:
private:
AliHLTComponentHandler(const AliHLTComponentHandler&);
AliHLTComponentHandler& operator=(const AliHLTComponentHandler&);
AliHLTComponent* FindComponent(const char* componentID);
int InsertComponent(AliHLTComponent* pSample);
int UnloadLibraries();
int ActivateAgents(const char* library=NULL, const char* blackList=NULL);
int DeactivateAgents() const;
public:
struct AliHLTLibHandle {
AliHLTLibHandle() : fHandle(NULL), fName(NULL), fMode(kDynamic) {}
void* fHandle;
void* fName;
TLibraryMode fMode;
};
private:
AliHLTLibHandle* FindLibrary(const char* library);
int UnloadLibrary(AliHLTComponentHandler::AliHLTLibHandle &handle);
vector<AliHLTComponent*> fComponentList;
vector<AliHLTComponent*> fScheduleList;
vector<AliHLTLibHandle> fLibraryList;
AliHLTAnalysisEnvironment fEnvironment;
vector<AliHLTComponent*> fOwnedComponents;
TLibraryMode fLibraryMode;
AliHLTRunDesc fRunDesc;
char* fRunType;
static AliHLTComponentHandler* fgpInstance;
static int fgNofInstances;
ClassDef(AliHLTComponentHandler, 2);
};
#endif
AliHLTComponentHandler.h:1 AliHLTComponentHandler.h:2 AliHLTComponentHandler.h:3 AliHLTComponentHandler.h:4 AliHLTComponentHandler.h:5 AliHLTComponentHandler.h:6 AliHLTComponentHandler.h:7 AliHLTComponentHandler.h:8 AliHLTComponentHandler.h:9 AliHLTComponentHandler.h:10 AliHLTComponentHandler.h:11 AliHLTComponentHandler.h:12 AliHLTComponentHandler.h:13 AliHLTComponentHandler.h:14 AliHLTComponentHandler.h:15 AliHLTComponentHandler.h:16 AliHLTComponentHandler.h:17 AliHLTComponentHandler.h:18 AliHLTComponentHandler.h:19 AliHLTComponentHandler.h:20 AliHLTComponentHandler.h:21 AliHLTComponentHandler.h:22 AliHLTComponentHandler.h:23 AliHLTComponentHandler.h:24 AliHLTComponentHandler.h:25 AliHLTComponentHandler.h:26 AliHLTComponentHandler.h:27 AliHLTComponentHandler.h:28 AliHLTComponentHandler.h:29 AliHLTComponentHandler.h:30 AliHLTComponentHandler.h:31 AliHLTComponentHandler.h:32 AliHLTComponentHandler.h:33 AliHLTComponentHandler.h:34 AliHLTComponentHandler.h:35 AliHLTComponentHandler.h:36 AliHLTComponentHandler.h:37 AliHLTComponentHandler.h:38 AliHLTComponentHandler.h:39 AliHLTComponentHandler.h:40 AliHLTComponentHandler.h:41 AliHLTComponentHandler.h:42 AliHLTComponentHandler.h:43 AliHLTComponentHandler.h:44 AliHLTComponentHandler.h:45 AliHLTComponentHandler.h:46 AliHLTComponentHandler.h:47 AliHLTComponentHandler.h:48 AliHLTComponentHandler.h:49 AliHLTComponentHandler.h:50 AliHLTComponentHandler.h:51 AliHLTComponentHandler.h:52 AliHLTComponentHandler.h:53 AliHLTComponentHandler.h:54 AliHLTComponentHandler.h:55 AliHLTComponentHandler.h:56 AliHLTComponentHandler.h:57 AliHLTComponentHandler.h:58 AliHLTComponentHandler.h:59 AliHLTComponentHandler.h:60 AliHLTComponentHandler.h:61 AliHLTComponentHandler.h:62 AliHLTComponentHandler.h:63 AliHLTComponentHandler.h:64 AliHLTComponentHandler.h:65 AliHLTComponentHandler.h:66 AliHLTComponentHandler.h:67 AliHLTComponentHandler.h:68 AliHLTComponentHandler.h:69 AliHLTComponentHandler.h:70 AliHLTComponentHandler.h:71 AliHLTComponentHandler.h:72 AliHLTComponentHandler.h:73 AliHLTComponentHandler.h:74 AliHLTComponentHandler.h:75 AliHLTComponentHandler.h:76 AliHLTComponentHandler.h:77 AliHLTComponentHandler.h:78 AliHLTComponentHandler.h:79 AliHLTComponentHandler.h:80 AliHLTComponentHandler.h:81 AliHLTComponentHandler.h:82 AliHLTComponentHandler.h:83 AliHLTComponentHandler.h:84 AliHLTComponentHandler.h:85 AliHLTComponentHandler.h:86 AliHLTComponentHandler.h:87 AliHLTComponentHandler.h:88 AliHLTComponentHandler.h:89 AliHLTComponentHandler.h:90 AliHLTComponentHandler.h:91 AliHLTComponentHandler.h:92 AliHLTComponentHandler.h:93 AliHLTComponentHandler.h:94 AliHLTComponentHandler.h:95 AliHLTComponentHandler.h:96 AliHLTComponentHandler.h:97 AliHLTComponentHandler.h:98 AliHLTComponentHandler.h:99 AliHLTComponentHandler.h:100 AliHLTComponentHandler.h:101 AliHLTComponentHandler.h:102 AliHLTComponentHandler.h:103 AliHLTComponentHandler.h:104 AliHLTComponentHandler.h:105 AliHLTComponentHandler.h:106 AliHLTComponentHandler.h:107 AliHLTComponentHandler.h:108 AliHLTComponentHandler.h:109 AliHLTComponentHandler.h:110 AliHLTComponentHandler.h:111 AliHLTComponentHandler.h:112 AliHLTComponentHandler.h:113 AliHLTComponentHandler.h:114 AliHLTComponentHandler.h:115 AliHLTComponentHandler.h:116 AliHLTComponentHandler.h:117 AliHLTComponentHandler.h:118 AliHLTComponentHandler.h:119 AliHLTComponentHandler.h:120 AliHLTComponentHandler.h:121 AliHLTComponentHandler.h:122 AliHLTComponentHandler.h:123 AliHLTComponentHandler.h:124 AliHLTComponentHandler.h:125 AliHLTComponentHandler.h:126 AliHLTComponentHandler.h:127 AliHLTComponentHandler.h:128 AliHLTComponentHandler.h:129 AliHLTComponentHandler.h:130 AliHLTComponentHandler.h:131 AliHLTComponentHandler.h:132 AliHLTComponentHandler.h:133 AliHLTComponentHandler.h:134 AliHLTComponentHandler.h:135 AliHLTComponentHandler.h:136 AliHLTComponentHandler.h:137 AliHLTComponentHandler.h:138 AliHLTComponentHandler.h:139 AliHLTComponentHandler.h:140 AliHLTComponentHandler.h:141 AliHLTComponentHandler.h:142 AliHLTComponentHandler.h:143 AliHLTComponentHandler.h:144 AliHLTComponentHandler.h:145 AliHLTComponentHandler.h:146 AliHLTComponentHandler.h:147 AliHLTComponentHandler.h:148 AliHLTComponentHandler.h:149 AliHLTComponentHandler.h:150 AliHLTComponentHandler.h:151 AliHLTComponentHandler.h:152 AliHLTComponentHandler.h:153 AliHLTComponentHandler.h:154 AliHLTComponentHandler.h:155 AliHLTComponentHandler.h:156 AliHLTComponentHandler.h:157 AliHLTComponentHandler.h:158 AliHLTComponentHandler.h:159 AliHLTComponentHandler.h:160 AliHLTComponentHandler.h:161 AliHLTComponentHandler.h:162 AliHLTComponentHandler.h:163 AliHLTComponentHandler.h:164 AliHLTComponentHandler.h:165 AliHLTComponentHandler.h:166 AliHLTComponentHandler.h:167 AliHLTComponentHandler.h:168 AliHLTComponentHandler.h:169 AliHLTComponentHandler.h:170 AliHLTComponentHandler.h:171 AliHLTComponentHandler.h:172 AliHLTComponentHandler.h:173 AliHLTComponentHandler.h:174 AliHLTComponentHandler.h:175 AliHLTComponentHandler.h:176 AliHLTComponentHandler.h:177 AliHLTComponentHandler.h:178 AliHLTComponentHandler.h:179 AliHLTComponentHandler.h:180 AliHLTComponentHandler.h:181 AliHLTComponentHandler.h:182 AliHLTComponentHandler.h:183 AliHLTComponentHandler.h:184 AliHLTComponentHandler.h:185 AliHLTComponentHandler.h:186 AliHLTComponentHandler.h:187 AliHLTComponentHandler.h:188 AliHLTComponentHandler.h:189 AliHLTComponentHandler.h:190 AliHLTComponentHandler.h:191 AliHLTComponentHandler.h:192 AliHLTComponentHandler.h:193 AliHLTComponentHandler.h:194 AliHLTComponentHandler.h:195 AliHLTComponentHandler.h:196 AliHLTComponentHandler.h:197 AliHLTComponentHandler.h:198 AliHLTComponentHandler.h:199 AliHLTComponentHandler.h:200 AliHLTComponentHandler.h:201 AliHLTComponentHandler.h:202 AliHLTComponentHandler.h:203 AliHLTComponentHandler.h:204 AliHLTComponentHandler.h:205 AliHLTComponentHandler.h:206 AliHLTComponentHandler.h:207 AliHLTComponentHandler.h:208 AliHLTComponentHandler.h:209 AliHLTComponentHandler.h:210 AliHLTComponentHandler.h:211 AliHLTComponentHandler.h:212 AliHLTComponentHandler.h:213 AliHLTComponentHandler.h:214 AliHLTComponentHandler.h:215 AliHLTComponentHandler.h:216 AliHLTComponentHandler.h:217 AliHLTComponentHandler.h:218 AliHLTComponentHandler.h:219 AliHLTComponentHandler.h:220 AliHLTComponentHandler.h:221 AliHLTComponentHandler.h:222 AliHLTComponentHandler.h:223 AliHLTComponentHandler.h:224 AliHLTComponentHandler.h:225 AliHLTComponentHandler.h:226 AliHLTComponentHandler.h:227 AliHLTComponentHandler.h:228 AliHLTComponentHandler.h:229 AliHLTComponentHandler.h:230 AliHLTComponentHandler.h:231 AliHLTComponentHandler.h:232 AliHLTComponentHandler.h:233 AliHLTComponentHandler.h:234 AliHLTComponentHandler.h:235 AliHLTComponentHandler.h:236 AliHLTComponentHandler.h:237 AliHLTComponentHandler.h:238 AliHLTComponentHandler.h:239 AliHLTComponentHandler.h:240 AliHLTComponentHandler.h:241 AliHLTComponentHandler.h:242 AliHLTComponentHandler.h:243 AliHLTComponentHandler.h:244 AliHLTComponentHandler.h:245 AliHLTComponentHandler.h:246 AliHLTComponentHandler.h:247 AliHLTComponentHandler.h:248 AliHLTComponentHandler.h:249 AliHLTComponentHandler.h:250 AliHLTComponentHandler.h:251 AliHLTComponentHandler.h:252 AliHLTComponentHandler.h:253 AliHLTComponentHandler.h:254 AliHLTComponentHandler.h:255 AliHLTComponentHandler.h:256 AliHLTComponentHandler.h:257 AliHLTComponentHandler.h:258 AliHLTComponentHandler.h:259 AliHLTComponentHandler.h:260 AliHLTComponentHandler.h:261 AliHLTComponentHandler.h:262 AliHLTComponentHandler.h:263 AliHLTComponentHandler.h:264 AliHLTComponentHandler.h:265 AliHLTComponentHandler.h:266 AliHLTComponentHandler.h:267 AliHLTComponentHandler.h:268 AliHLTComponentHandler.h:269 AliHLTComponentHandler.h:270 AliHLTComponentHandler.h:271 AliHLTComponentHandler.h:272 AliHLTComponentHandler.h:273 AliHLTComponentHandler.h:274 AliHLTComponentHandler.h:275 AliHLTComponentHandler.h:276 AliHLTComponentHandler.h:277 AliHLTComponentHandler.h:278 AliHLTComponentHandler.h:279 AliHLTComponentHandler.h:280 AliHLTComponentHandler.h:281 AliHLTComponentHandler.h:282 AliHLTComponentHandler.h:283 AliHLTComponentHandler.h:284 AliHLTComponentHandler.h:285 AliHLTComponentHandler.h:286 AliHLTComponentHandler.h:287 AliHLTComponentHandler.h:288 AliHLTComponentHandler.h:289 AliHLTComponentHandler.h:290 AliHLTComponentHandler.h:291 AliHLTComponentHandler.h:292 AliHLTComponentHandler.h:293 AliHLTComponentHandler.h:294 AliHLTComponentHandler.h:295 AliHLTComponentHandler.h:296 AliHLTComponentHandler.h:297 AliHLTComponentHandler.h:298 AliHLTComponentHandler.h:299 AliHLTComponentHandler.h:300 AliHLTComponentHandler.h:301 AliHLTComponentHandler.h:302 AliHLTComponentHandler.h:303 AliHLTComponentHandler.h:304 AliHLTComponentHandler.h:305 AliHLTComponentHandler.h:306 AliHLTComponentHandler.h:307 AliHLTComponentHandler.h:308 AliHLTComponentHandler.h:309 AliHLTComponentHandler.h:310 AliHLTComponentHandler.h:311 AliHLTComponentHandler.h:312 AliHLTComponentHandler.h:313 AliHLTComponentHandler.h:314 AliHLTComponentHandler.h:315 AliHLTComponentHandler.h:316 AliHLTComponentHandler.h:317 AliHLTComponentHandler.h:318 AliHLTComponentHandler.h:319 AliHLTComponentHandler.h:320 AliHLTComponentHandler.h:321 AliHLTComponentHandler.h:322 AliHLTComponentHandler.h:323 AliHLTComponentHandler.h:324 AliHLTComponentHandler.h:325 AliHLTComponentHandler.h:326 AliHLTComponentHandler.h:327 AliHLTComponentHandler.h:328 AliHLTComponentHandler.h:329 AliHLTComponentHandler.h:330 AliHLTComponentHandler.h:331 AliHLTComponentHandler.h:332 AliHLTComponentHandler.h:333 AliHLTComponentHandler.h:334 AliHLTComponentHandler.h:335 AliHLTComponentHandler.h:336 AliHLTComponentHandler.h:337 AliHLTComponentHandler.h:338 AliHLTComponentHandler.h:339 AliHLTComponentHandler.h:340 AliHLTComponentHandler.h:341 AliHLTComponentHandler.h:342 AliHLTComponentHandler.h:343 AliHLTComponentHandler.h:344 AliHLTComponentHandler.h:345 AliHLTComponentHandler.h:346 AliHLTComponentHandler.h:347 AliHLTComponentHandler.h:348 AliHLTComponentHandler.h:349 AliHLTComponentHandler.h:350 AliHLTComponentHandler.h:351 AliHLTComponentHandler.h:352 AliHLTComponentHandler.h:353 AliHLTComponentHandler.h:354 AliHLTComponentHandler.h:355 AliHLTComponentHandler.h:356 AliHLTComponentHandler.h:357 AliHLTComponentHandler.h:358 AliHLTComponentHandler.h:359 AliHLTComponentHandler.h:360 AliHLTComponentHandler.h:361 AliHLTComponentHandler.h:362 AliHLTComponentHandler.h:363 AliHLTComponentHandler.h:364 AliHLTComponentHandler.h:365 AliHLTComponentHandler.h:366