Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

FedMessenger.hpp

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 // when doing changes here: remember to change size of reserved memory for this
00016 // this names in the different places, where FED_SERVER_NAME is used.
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         // set the proper date with Timestamp struct
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 } } //end namespaces
00270 
00271 #endif

Generated on Fri Mar 30 02:54:33 2007 for InterComLayer by doxygen 1.3.5