moved AliHLTModulePreprocessor to base library and introduced abstract interface...
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTShuttleInterface.h
1 //-*- Mode: C++ -*-
2 // @(#) $Id: AliHLTShuttleInterface.h 23318 2008-01-14 12:43:28Z hristov $
3
4 #ifndef ALIHLTSHUTTLEINTERFACE_H
5 #define ALIHLTSHUTTLEINTERFACE_H
6 //* This file is property of and copyright by the ALICE HLT Project        * 
7 //* ALICE Experiment at CERN, All rights reserved.                         *
8 //* See cxx source for full Copyright notice                               *
9
10 /**
11  * @file   AliHLTShuttleInterface.h
12  * @author Matthias Richter
13  * @date   2008-01-22
14  * @brief  Pure virtual interface to the HLT shuttle methods
15  */
16
17 // see below for class documentation
18 // or
19 // refer to README to build package
20 // or
21 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
22
23 #include "TObject.h"
24
25 class AliHLTPreprocessor;
26 class TMap;
27 class AliCDBMetaData;
28 class AliCDBEntry;
29
30 /**
31  * @class AliHLTShuttleInterface
32  * This class implements the redirection of the shuttle access methods for
33  * AliHLTModulePreprocessor classes. The AliHLTShuttleInterface has been
34  * declared pure virtual to avoid dependencies between the libHLTshuttle and
35  * the component libraries. It implements the same interface to the shuttle
36  * as the AliPreprocessor.
37  *
38  * The AliHLTPreprocessor initializes each AliHLTModulePreprocessor with this
39  * interface. From the interface methods of AliHLTModulePreprocessor classes,
40  * the call is redirected via AliHLTShuttleInterface to the AliHLTPreprocessor,
41  * which makes the methods publicly available AliPreprocessor.
42  *
43  * @author Matthias Richter
44  */
45 class AliHLTShuttleInterface
46 {
47 public:
48   /** Constructor*/
49   AliHLTShuttleInterface();
50   /** Destructor */
51   virtual ~AliHLTShuttleInterface();
52
53   /** Get the run no */
54   virtual Int_t PreprocessorGetRun() = 0;
55
56   /** Get the start time */
57   virtual UInt_t PreprocessorGetStartTime() = 0;
58
59   /** Get the end time */
60   virtual UInt_t PreprocessorGetEndTime() = 0;
61
62   // the AliPreprocessor interface, all functions redirected via the
63   // AliHLTPreprocessor
64   virtual Bool_t PreprocessorStore(const char* pathLevel2, const char* pathLevel3, TObject* object,
65                AliCDBMetaData* metaData, Int_t validityStart = 0, Bool_t validityInfinite = kFALSE) = 0;
66   virtual Bool_t PreprocessorStoreReferenceData(const char* pathLevel2, const char* pathLevel3, TObject* object,
67                             AliCDBMetaData* metaData) = 0;
68   virtual Bool_t PreprocessorStoreReferenceFile(const char* localFile, const char* gridFileName) = 0;
69
70   virtual Bool_t PreprocessorStoreRunMetadataFile(const char* localFile, const char* gridFileName) = 0;
71
72   virtual const char* PreprocessorGetFile(Int_t system, const char* id, const char* source) = 0;
73
74   virtual TList* PreprocessorGetFileSources(Int_t system, const char* id = 0) = 0;
75
76   virtual TList* PreprocessorGetFileIDs(Int_t system, const char* source) = 0;
77
78   virtual const char* PreprocessorGetRunParameter(const char* param) = 0;
79
80   virtual AliCDBEntry* PreprocessorGetFromOCDB(const char* pathLevel2, const char* pathLevel3) = 0;
81
82   virtual const char* PreprocessorGetRunType() = 0;
83
84   virtual void PreprocessorLog(const char* message) = 0;
85
86 protected:
87
88 private:
89   /** copy constructor prohibited */
90   AliHLTShuttleInterface(const AliHLTShuttleInterface&);
91   /** assignment operator prohibited */
92   AliHLTShuttleInterface& operator=(const AliHLTShuttleInterface&);
93
94   ClassDef(AliHLTShuttleInterface, 0);
95 };
96 #endif