Added new message type "Unknown alias/DP" (type n. 7)
[u/mrichter/AliRoot.git] / SHUTTLE / DCSClient / AliDCSClient.h
1 #ifndef ALI_DCS_CLIENT_H
2 #define ALI_DCS_CLIENT_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 //
10 // This class represents the AliDCSClient.
11 // The client used for data retrieval from DCS server.
12 // For more info see AliDCSClient.cxx
13 //
14
15 #include "AliDCSMessage.h"
16
17 class TObjArray;
18 class TSocket;
19 class TMap;
20 class TCollection;
21
22 class AliDCSClient: public TObject {
23 public:
24
25         enum {
26                 fgkBadState=-1,              // Bad state
27                 fgkInvalidParameter = -2,    // Invalid parameter
28                 fgkTimeout = -3,             // Timeout
29                 fgkBadMessage = -4,          // Bad message
30                 fgkCommError = -5,           // Communication error
31                 fgkServerError = -6,         // Server error
32                 fgkUnknownDP = -7            // unknown alias/DP error
33         };
34         
35 ////    friend class AliShuttle;
36
37         AliDCSClient(const char* host, Int_t port, UInt_t timeout = 5000,
38                         Int_t retries = 5, Int_t multiSplit = 100);
39         virtual ~AliDCSClient();
40
41
42         Int_t GetDPValues(const char* dpName, UInt_t startTime, UInt_t endTime,
43                                 TObjArray* result);
44
45         Int_t GetAliasValues(const char* alias, UInt_t startTime,
46                                 UInt_t endTime, TObjArray* result);
47
48         TMap* GetDPValues(const TSeqCollection* dpList, UInt_t startTime, UInt_t endTime, Int_t startIndex = 0, Int_t endIndex = -1);
49
50         TMap* GetAliasValues(const TSeqCollection* aliasList, UInt_t startTime, UInt_t endTime, Int_t startIndex = 0, Int_t endIndex = -1);
51
52         AliDCSMessage::ErrorCode GetServerErrorCode() const
53                 { return fServerErrorCode;}
54
55         Int_t GetResultErrorCode() const {return fResultErrorCode;}
56         const TString& GetServerError() const {return fServerError;}
57
58
59         Bool_t IsConnected();
60
61         void Close();
62
63         static const char* GetErrorString(Int_t code);
64
65 private:
66         static const char* fgkBadStateString;           // Bad state string
67         static const char* fgkInvalidParameterString;   // Invalid parameter string
68         static const char* fgkTimeoutString;            // Timeout string
69         static const char* fgkBadMessageString;         // Bad message string
70         static const char* fgkCommErrorString;          // Communication error string
71         static const char* fgkServerErrorString;        // Server error string
72         static const char* fgkUnknownDPString;          // Unknown alias/DP string
73
74         TSocket* fSocket;       // Pointer to the TCP socket client
75         TString fHost;          // server host
76         Int_t   fPort;          // server port
77         UInt_t fTimeout;        // timeout parameter
78         Int_t fRetries;         // number of retries
79         Int_t   fMultiSplit; // number of datapoints that are queried at a time in a multi dp request, if set to 1 forces single requests 
80         AliDCSMessage::ErrorCode fServerErrorCode;      // server error code
81         TString fServerError;   // server error string
82         
83         Int_t fResultErrorCode; // result error code
84
85         Bool_t Connect();
86
87         Int_t SendBuffer(const char* buffer, Int_t size);
88         Int_t ReceiveBuffer(char* buffer, Int_t size);
89         Int_t SendMessage(AliDCSMessage& message);
90         Int_t ReceiveMessage(AliDCSMessage& message);
91
92         Int_t GetValues(AliDCSMessage::RequestType requestType,
93                 const char* requestString, UInt_t startTime, UInt_t endTime,
94                 TObjArray* result);
95
96         TMap* GetValues(AliDCSMessage::RequestType requestType,
97                 const TSeqCollection* list, UInt_t startTime, UInt_t endTime,
98                 Int_t startIndex, Int_t endIndex);
99
100         Int_t ReceiveValueSet(TObjArray* result, Int_t& ownerIndex);
101
102         AliDCSClient(const AliDCSClient& other);                // not implemented
103         AliDCSClient& operator= (const AliDCSClient& other);    // not implemented
104
105         ClassDef(AliDCSClient, 0);
106 };
107
108 #endif