ROOT logo
//-*- Mode: C++ -*-

// $Id: AliHLTHOMERProxyHandler.h $

#ifndef ALIHLTHOMERPROXYHANDLER_H
#define ALIHLTHOMERPROXYHANDLER_H

/* This file is property of and copyright by the ALICE HLT Project        * 
 * ALICE Experiment at CERN, All rights reserved.                         *
 * See cxx source for full Copyright notice     
 */

/** @file   AliHLTHOMERProxyHandler.h
    @author Jochen Thaeder
    @date
    @brief  HOMER proxy handler for HomerManger
*/

#include "TString.h"
#include "TList.h"
#include "TXMLNode.h" 
// -- -- -- -- -- -- -- 
#include "AliHLTHOMERSourceDesc.h"
// -- -- -- -- -- -- -- 
#include "AliHLTLoggingVariadicFree.h"

/**
 * @class AliHLTHOMERProxyHandler
 * This Class should handle the communication with the proxy
 * and fill the source list.
 *
 * @ingroup alihlt_homer
 */

class AliHLTHOMERProxyHandler : public TObject, public AliHLTLogging
{
public:

  /*
   * ---------------------------------------------------------------------------------
   *                            Constructor / Destructor
   * ---------------------------------------------------------------------------------
   */

  /** constructor */
  AliHLTHOMERProxyHandler();

  /** destructor */
  virtual ~AliHLTHOMERProxyHandler();

  /** Initialize 
   *  @return 0 on success, <0 for failure
   */
  Int_t Initialize();

  /*
   * ---------------------------------------------------------------------------------
   *                             Source List - public
   * ---------------------------------------------------------------------------------
   */

  /** Fill's source list, with entries 
   *  @return 0 on success, <0 for failure, 1 for no active service
   */
  Int_t FillSourceList(TList *srcList);

  ///////////////////////////////////////////////////////////////////////////////////

private:

  /** copy constructor prohibited */
  AliHLTHOMERProxyHandler(const AliHLTHOMERProxyHandler&);            // Not implemented.

  /** assignment operator prohibited */
  AliHLTHOMERProxyHandler& operator=(const AliHLTHOMERProxyHandler&); // Not implemented.

  /*
   * ---------------------------------------------------------------------------------
   *                        Realms - private
   * ---------------------------------------------------------------------------------
   */

  /** Realms */
  enum HOMERRealms_t { 
    kHLT,             /**< HLT realm */
    kACR,             /**< ACR realm */
    kGPN,             /**< GPN realm */
    kKIP,             /**< KIP realm */         
    kLoc,             /**< Local realm. needs ssh tunnel */
    kHOMERRealmsMax   /**< Number of enum entries */
  };

  /** Array of proxy nodes per realm */
  static const Char_t *fgkHOMERProxyNode[];     

  /** Indentifies the realm and sets it
   *  @return 0 on success, <0 for failure
   */
  void IdentifyRealm();
  
  /*
   * ---------------------------------------------------------------------------------
   *                        Proxy Communication - private
   * ---------------------------------------------------------------------------------
   */

  /** Get xmlrpc response from the proxy 
   *  @return 0 on success, <0 for failure
   */
  Int_t RequestXmlRpcResponse();

  /** process xmlrpc response and fill the source list
   *  @return 0 on success, <0 for failure, 1 for no active service
   */
  Int_t ProcessXmlRpcResponse();
  
  /*
   * ---------------------------------------------------------------------------------
   *                            Source Resolving - private
   * ---------------------------------------------------------------------------------
   */
  
  /** Add a new Service to list
   *  @param xmlNode   Ptr to service node
   *  @return          0 on sucess, <0 for failure
   */
  Int_t AddService(TXMLNode *innerNode);
  
  /*
   * ---------------------------------------------------------------------------------
   *                            Members - private
   * ---------------------------------------------------------------------------------
   */

  /** Realm, which can be ACR, GPN, HLT, KIP */
  Int_t       fRealm;                             // see above

  /** xmlRPC response */
  TString     fXmlRpcResponse;                    // see above

  /** List to HOMER sources */
  TList*      fSourceList;                        //! transient

  ClassDef(AliHLTHOMERProxyHandler, 0); // Handles HLT xml sources.
};

#endif
 AliHLTHOMERProxyHandler.h:1
 AliHLTHOMERProxyHandler.h:2
 AliHLTHOMERProxyHandler.h:3
 AliHLTHOMERProxyHandler.h:4
 AliHLTHOMERProxyHandler.h:5
 AliHLTHOMERProxyHandler.h:6
 AliHLTHOMERProxyHandler.h:7
 AliHLTHOMERProxyHandler.h:8
 AliHLTHOMERProxyHandler.h:9
 AliHLTHOMERProxyHandler.h:10
 AliHLTHOMERProxyHandler.h:11
 AliHLTHOMERProxyHandler.h:12
 AliHLTHOMERProxyHandler.h:13
 AliHLTHOMERProxyHandler.h:14
 AliHLTHOMERProxyHandler.h:15
 AliHLTHOMERProxyHandler.h:16
 AliHLTHOMERProxyHandler.h:17
 AliHLTHOMERProxyHandler.h:18
 AliHLTHOMERProxyHandler.h:19
 AliHLTHOMERProxyHandler.h:20
 AliHLTHOMERProxyHandler.h:21
 AliHLTHOMERProxyHandler.h:22
 AliHLTHOMERProxyHandler.h:23
 AliHLTHOMERProxyHandler.h:24
 AliHLTHOMERProxyHandler.h:25
 AliHLTHOMERProxyHandler.h:26
 AliHLTHOMERProxyHandler.h:27
 AliHLTHOMERProxyHandler.h:28
 AliHLTHOMERProxyHandler.h:29
 AliHLTHOMERProxyHandler.h:30
 AliHLTHOMERProxyHandler.h:31
 AliHLTHOMERProxyHandler.h:32
 AliHLTHOMERProxyHandler.h:33
 AliHLTHOMERProxyHandler.h:34
 AliHLTHOMERProxyHandler.h:35
 AliHLTHOMERProxyHandler.h:36
 AliHLTHOMERProxyHandler.h:37
 AliHLTHOMERProxyHandler.h:38
 AliHLTHOMERProxyHandler.h:39
 AliHLTHOMERProxyHandler.h:40
 AliHLTHOMERProxyHandler.h:41
 AliHLTHOMERProxyHandler.h:42
 AliHLTHOMERProxyHandler.h:43
 AliHLTHOMERProxyHandler.h:44
 AliHLTHOMERProxyHandler.h:45
 AliHLTHOMERProxyHandler.h:46
 AliHLTHOMERProxyHandler.h:47
 AliHLTHOMERProxyHandler.h:48
 AliHLTHOMERProxyHandler.h:49
 AliHLTHOMERProxyHandler.h:50
 AliHLTHOMERProxyHandler.h:51
 AliHLTHOMERProxyHandler.h:52
 AliHLTHOMERProxyHandler.h:53
 AliHLTHOMERProxyHandler.h:54
 AliHLTHOMERProxyHandler.h:55
 AliHLTHOMERProxyHandler.h:56
 AliHLTHOMERProxyHandler.h:57
 AliHLTHOMERProxyHandler.h:58
 AliHLTHOMERProxyHandler.h:59
 AliHLTHOMERProxyHandler.h:60
 AliHLTHOMERProxyHandler.h:61
 AliHLTHOMERProxyHandler.h:62
 AliHLTHOMERProxyHandler.h:63
 AliHLTHOMERProxyHandler.h:64
 AliHLTHOMERProxyHandler.h:65
 AliHLTHOMERProxyHandler.h:66
 AliHLTHOMERProxyHandler.h:67
 AliHLTHOMERProxyHandler.h:68
 AliHLTHOMERProxyHandler.h:69
 AliHLTHOMERProxyHandler.h:70
 AliHLTHOMERProxyHandler.h:71
 AliHLTHOMERProxyHandler.h:72
 AliHLTHOMERProxyHandler.h:73
 AliHLTHOMERProxyHandler.h:74
 AliHLTHOMERProxyHandler.h:75
 AliHLTHOMERProxyHandler.h:76
 AliHLTHOMERProxyHandler.h:77
 AliHLTHOMERProxyHandler.h:78
 AliHLTHOMERProxyHandler.h:79
 AliHLTHOMERProxyHandler.h:80
 AliHLTHOMERProxyHandler.h:81
 AliHLTHOMERProxyHandler.h:82
 AliHLTHOMERProxyHandler.h:83
 AliHLTHOMERProxyHandler.h:84
 AliHLTHOMERProxyHandler.h:85
 AliHLTHOMERProxyHandler.h:86
 AliHLTHOMERProxyHandler.h:87
 AliHLTHOMERProxyHandler.h:88
 AliHLTHOMERProxyHandler.h:89
 AliHLTHOMERProxyHandler.h:90
 AliHLTHOMERProxyHandler.h:91
 AliHLTHOMERProxyHandler.h:92
 AliHLTHOMERProxyHandler.h:93
 AliHLTHOMERProxyHandler.h:94
 AliHLTHOMERProxyHandler.h:95
 AliHLTHOMERProxyHandler.h:96
 AliHLTHOMERProxyHandler.h:97
 AliHLTHOMERProxyHandler.h:98
 AliHLTHOMERProxyHandler.h:99
 AliHLTHOMERProxyHandler.h:100
 AliHLTHOMERProxyHandler.h:101
 AliHLTHOMERProxyHandler.h:102
 AliHLTHOMERProxyHandler.h:103
 AliHLTHOMERProxyHandler.h:104
 AliHLTHOMERProxyHandler.h:105
 AliHLTHOMERProxyHandler.h:106
 AliHLTHOMERProxyHandler.h:107
 AliHLTHOMERProxyHandler.h:108
 AliHLTHOMERProxyHandler.h:109
 AliHLTHOMERProxyHandler.h:110
 AliHLTHOMERProxyHandler.h:111
 AliHLTHOMERProxyHandler.h:112
 AliHLTHOMERProxyHandler.h:113
 AliHLTHOMERProxyHandler.h:114
 AliHLTHOMERProxyHandler.h:115
 AliHLTHOMERProxyHandler.h:116
 AliHLTHOMERProxyHandler.h:117
 AliHLTHOMERProxyHandler.h:118
 AliHLTHOMERProxyHandler.h:119
 AliHLTHOMERProxyHandler.h:120
 AliHLTHOMERProxyHandler.h:121
 AliHLTHOMERProxyHandler.h:122
 AliHLTHOMERProxyHandler.h:123
 AliHLTHOMERProxyHandler.h:124
 AliHLTHOMERProxyHandler.h:125
 AliHLTHOMERProxyHandler.h:126
 AliHLTHOMERProxyHandler.h:127
 AliHLTHOMERProxyHandler.h:128
 AliHLTHOMERProxyHandler.h:129
 AliHLTHOMERProxyHandler.h:130
 AliHLTHOMERProxyHandler.h:131
 AliHLTHOMERProxyHandler.h:132
 AliHLTHOMERProxyHandler.h:133
 AliHLTHOMERProxyHandler.h:134
 AliHLTHOMERProxyHandler.h:135
 AliHLTHOMERProxyHandler.h:136
 AliHLTHOMERProxyHandler.h:137
 AliHLTHOMERProxyHandler.h:138
 AliHLTHOMERProxyHandler.h:139
 AliHLTHOMERProxyHandler.h:140
 AliHLTHOMERProxyHandler.h:141
 AliHLTHOMERProxyHandler.h:142
 AliHLTHOMERProxyHandler.h:143
 AliHLTHOMERProxyHandler.h:144
 AliHLTHOMERProxyHandler.h:145
 AliHLTHOMERProxyHandler.h:146
 AliHLTHOMERProxyHandler.h:147