Adding an abstract interface which provides OCDB functionality within the libHLTbase
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTMisc.h
1 //-*- Mode: C++ -*-
2 // $Id$
3
4 #ifndef ALIHLTMISC_H
5 #define ALIHLTMISC_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 /// @file   AliHLTMisc.h
11 /// @author Matthias Richter
12 /// @date   
13 /// @brief  Definition of various glue functions implemented in dynamically
14 ///         loaded libraries
15
16 #include "TObject.h"
17
18 class AliCDBManager;
19 class AliCDBEntry;
20
21 class AliHLTMisc : public TObject {
22  public:
23   AliHLTMisc();
24   ~AliHLTMisc();
25
26   template<class T>
27   static T* LoadInstance(const T* dummy, const char* classname, const char* library);
28
29   static AliHLTMisc& Instance();
30
31   virtual int InitCDB(const char* cdbpath);
32
33   virtual int SetCDBRunNo(int runNo);
34
35   virtual AliCDBEntry* LoadOCDBEntry(const char* path, int runNo=-1, int version = -1, int subVersion = -1);
36
37   virtual TObject* ExtractObject(AliCDBEntry* entry);
38
39  private:
40   static AliHLTMisc* fgInstance;
41
42   ClassDef(AliHLTMisc, 0)
43 };
44
45 #define ALIHLTMISC_LIBRARY "libHLTrec.so"
46 #define ALIHLTMISC_INIT_CDB "AliHLTMiscInitCDB"
47 #define ALIHLTMISC_SET_CDB_RUNNO "AliHLTMiscSetCDBRunNo"
48
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52
53   /**
54    * Init the CDB access for the running instance.
55    * The method is used from the C wrapper interface utilized by the  on-line
56    * framework. The path of the (H)CDB is set to the specified path.<br>
57    * When running from AliRoot, the CDB path is set in the startup of the
58    * reconstruction.<br>
59    * If cdbpath is nil or empty and the CDB is not already initialized, the
60    * CDB storage is set to local://$ALICE_ROOT/OCDB and the run no to 0.
61    * @param cdbpath     path to the CDB
62    * @return neg. error code if failed
63    * @note function implemented in libHLTrec
64    */
65   int AliHLTMiscInitCDB(const char* cdbpath);
66   typedef int (*AliHLTMiscInitCDB_t)(const char* cdbpath);
67
68   /**
69    * Init the Run no for the CDB access.
70    * @param runNo       the run no
71    * @return neg. error code if failed
72    * @note function implemented in libHLTrec
73    */
74   int AliHLTMiscSetCDBRunNo(int runNo);
75   typedef int (*AliHLTMiscSetCDBRunNo_t)(int runNo);
76
77 #ifdef __cplusplus
78 }
79 #endif
80 #endif //ALIHLTMISC_H