00001 #ifndef ZTT_DCS_FED_MESSENGER_HPP
00002 #define ZTT_DCS_FED_MESSENGER_HPP
00003
00004
00005 #include "dim/dis.hxx"
00006 #include "fee_loglevels.h"
00007 #include "Timestamp.hpp"
00008
00009 #include <ctime>
00010 #include <string>
00011
00012
00013 namespace ztt { namespace dcs {
00014
00015
00016
00017 #ifdef TPC
00018 #define DETECTOR "tpc\0"
00019 #define FED_SERVER_NAME "tpc_dimfed_server" // name of the FedServer
00020 #define SOURCE_LOCAL "tpc_interComLayer"
00021 #define SOURCE_FEE_CLIENT "tpc_dimfee_client"
00022 #else
00023 #ifdef TRD
00024 #define DETECTOR "trd\0"
00025 #define FED_SERVER_NAME "trd_dimfed_server" // name of the FedServer
00026 #define SOURCE_LOCAL "trd_interComLayer"
00027 #define SOURCE_FEE_CLIENT "trd_dimfee_client"
00028 #else
00029 #ifdef FMD
00030 #define DETECTOR "fmd\0"
00031 #define FED_SERVER_NAME "fmd_dimfed_server"
00032 #define SOURCE_LOCAL "fmd_interComLayer"
00033 #define SOURCE_FEE_CLIENT "fmd_dimfee_client"
00034 #else
00035 #ifdef PHOS
00036 #define DETECTOR "phos\0"
00037 #define FED_SERVER_NAME "phos_dimfed_server"
00038 #define SOURCE_LOCAL "phos_interComLayer"
00039 #define SOURCE_FEE_CLIENT "phos_dimfee_client"
00040 #else
00041 #define DETECTOR "ZTT\0"
00042 #define FED_SERVER_NAME "ztt_dimfed_server" // name of the FedServer
00043 #define SOURCE_LOCAL "ztt_interComLayer"
00044 #define SOURCE_FEE_CLIENT "ztt_dimfee_client"
00045 #endif
00046 #endif
00047 #endif
00048 #endif
00049
00071 class FedServer;
00072
00083 typedef struct MessageStruct{
00084
00088 unsigned int eventType;
00089
00093 char detector[Msg_Detector_Size];
00094
00098 char source[Msg_Source_Size];
00099
00103 char description[Msg_Description_Size];
00104
00108 char date[Msg_Date_Size];
00109
00116 MessageStruct(char* detectorName) {
00117 Timestamp now;
00118
00119 eventType = Msg_Info;
00120 memcpy(detector, detectorName, Msg_Detector_Size);
00121 strcpy(source, "FedServer");
00122 strcpy(description, "FedServer started");
00123
00124
00125 strcpy(date, now.date);
00126
00127 }
00128 MessageStruct(const MessageStruct &orig){
00129 eventType = orig.eventType;
00130 memcpy(detector,orig.detector,Msg_Detector_Size);
00131 memcpy(source,orig.source,Msg_Source_Size);
00132 strcpy(description,orig.description);
00133 memcpy(date,orig.date,Msg_Date_Size);
00134 }
00135
00148 MessageStruct(unsigned int evType, char* detectorName, char* origin, char* descript,
00149 char* eventDate) {
00150 eventType = evType;
00151 memcpy(detector, detectorName, Msg_Detector_Size);
00152 strcpy(source, origin);
00153 strcpy(description, descript);
00154 strcpy(date, eventDate);
00155 }
00156
00165 MessageStruct& operator=(const MessageStruct& rhs) {
00166 if (this == &rhs) {
00167 return *this;
00168 }
00169 eventType = rhs.eventType;
00170 memcpy(detector, rhs.detector, Msg_Detector_Size);
00171 memcpy(source, rhs.source, Msg_Source_Size);
00172 memcpy(description, rhs.description, Msg_Description_Size);
00173 memcpy(date, rhs.date, Msg_Date_Size);
00174 return *this;
00175 }
00176
00177 } MessageStruct;
00178
00179
00205 class FedMessenger : public DimService{
00206 public:
00214 FedMessenger(char* detectorName, char* serviceName, FedServer* server)
00215 : DimService(serviceName, MSG_DIM_STRUCTURE, &mMessage,
00216 sizeof(MessageStruct)), mMessage(detectorName), mpServer(server) {};
00217
00221 virtual ~FedMessenger();
00222
00228 void setMessage(MessageStruct* pMsg);
00229
00236 void setLogLevel(unsigned int level);
00237
00238 #ifdef __UTEST
00239
00246 MessageStruct* getMessage();
00247 #endif
00248
00249
00250 private:
00254 MessageStruct mMessage;
00255
00259 FedServer* mpServer;
00260
00264 unsigned int mLogLevel;
00265
00266 };
00267
00268
00269 } }
00270
00271 #endif