ALIROOT-5600 - skip non-participating detector modules
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTHOMERProxyHandler.h
1 //-*- Mode: C++ -*-
2
3 // $Id: AliHLTHOMERProxyHandler.h $
4
5 #ifndef ALIHLTHOMERPROXYHANDLER_H
6 #define ALIHLTHOMERPROXYHANDLER_H
7
8 /* This file is property of and copyright by the ALICE HLT Project        * 
9  * ALICE Experiment at CERN, All rights reserved.                         *
10  * See cxx source for full Copyright notice     
11  */
12
13 /** @file   AliHLTHOMERProxyHandler.h
14     @author Jochen Thaeder
15     @date
16     @brief  HOMER proxy handler for HomerManger
17 */
18
19 #include "TString.h"
20 #include "TList.h"
21 #include "TXMLNode.h" 
22 // -- -- -- -- -- -- -- 
23 #include "AliHLTHOMERSourceDesc.h"
24 // -- -- -- -- -- -- -- 
25 #include "AliHLTLoggingVariadicFree.h"
26
27 /**
28  * @class AliHLTHOMERProxyHandler
29  * This Class should handle the communication with the proxy
30  * and fill the source list.
31  *
32  * @ingroup alihlt_homer
33  */
34
35 class AliHLTHOMERProxyHandler : public TObject, public AliHLTLogging
36 {
37 public:
38
39   /*
40    * ---------------------------------------------------------------------------------
41    *                            Constructor / Destructor
42    * ---------------------------------------------------------------------------------
43    */
44
45   /** constructor */
46   AliHLTHOMERProxyHandler();
47
48   /** destructor */
49   virtual ~AliHLTHOMERProxyHandler();
50
51   /** Initialize 
52    *  @return 0 on success, <0 for failure
53    */
54   Int_t Initialize();
55
56   /*
57    * ---------------------------------------------------------------------------------
58    *                             Source List - public
59    * ---------------------------------------------------------------------------------
60    */
61
62   /** Fill's source list, with entries 
63    *  @return 0 on success, <0 for failure, 1 for no active service
64    */
65   Int_t FillSourceList(TList *srcList);
66
67   ///////////////////////////////////////////////////////////////////////////////////
68
69 private:
70
71   /** copy constructor prohibited */
72   AliHLTHOMERProxyHandler(const AliHLTHOMERProxyHandler&);            // Not implemented.
73
74   /** assignment operator prohibited */
75   AliHLTHOMERProxyHandler& operator=(const AliHLTHOMERProxyHandler&); // Not implemented.
76
77   /*
78    * ---------------------------------------------------------------------------------
79    *                        Realms - private
80    * ---------------------------------------------------------------------------------
81    */
82
83   /** Realms */
84   enum HOMERRealms_t { 
85     kHLT,             /**< HLT realm */
86     kACR,             /**< ACR realm */
87     kGPN,             /**< GPN realm */
88     kKIP,             /**< KIP realm */         
89     kLoc,             /**< Local realm. needs ssh tunnel */
90     kHOMERRealmsMax   /**< Number of enum entries */
91   };
92
93   /** Array of proxy nodes per realm */
94   static const Char_t *fgkHOMERProxyNode[];     
95
96   /** Indentifies the realm and sets it
97    *  @return 0 on success, <0 for failure
98    */
99   void IdentifyRealm();
100   
101   /*
102    * ---------------------------------------------------------------------------------
103    *                        Proxy Communication - private
104    * ---------------------------------------------------------------------------------
105    */
106
107   /** Get xmlrpc response from the proxy 
108    *  @return 0 on success, <0 for failure
109    */
110   Int_t RequestXmlRpcResponse();
111
112   /** process xmlrpc response and fill the source list
113    *  @return 0 on success, <0 for failure, 1 for no active service
114    */
115   Int_t ProcessXmlRpcResponse();
116   
117   /*
118    * ---------------------------------------------------------------------------------
119    *                            Source Resolving - private
120    * ---------------------------------------------------------------------------------
121    */
122   
123   /** Add a new Service to list
124    *  @param xmlNode   Ptr to service node
125    *  @return          0 on sucess, <0 for failure
126    */
127   Int_t AddService(TXMLNode *innerNode);
128   
129   /*
130    * ---------------------------------------------------------------------------------
131    *                            Members - private
132    * ---------------------------------------------------------------------------------
133    */
134
135   /** Realm, which can be ACR, GPN, HLT, KIP */
136   Int_t       fRealm;                             // see above
137
138   /** xmlRPC response */
139   TString     fXmlRpcResponse;                    // see above
140
141   /** List to HOMER sources */
142   TList*      fSourceList;                        //! transient
143
144   ClassDef(AliHLTHOMERProxyHandler, 0); // Handles HLT xml sources.
145 };
146
147 #endif