Go to the documentation of this file.00001
00002
00003
00004
00005
00007
00008 #ifndef SMPROXY_H
00009 #define SMPROXY_H
00010
00011 #include "EventFilter/ResourceBroker/interface/FUTypes.h"
00012 #include "EventFilter/Utilities/interface/i2oEvfMsgs.h"
00013 #include "EventFilter/Utilities/interface/Exception.h"
00014 #include "xdaq/Application.h"
00015
00016 #include <string>
00017
00018 namespace evf {
00019
00024 class SMProxy {
00025 public:
00026
00027
00028
00029 SMProxy(xdaq::ApplicationDescriptor *fuAppDesc,
00030 xdaq::ApplicationDescriptor *smAppDesc,
00031 xdaq::ApplicationContext *fuAppContext,
00032 toolbox::mem::Pool *i2oPool);
00033 virtual ~SMProxy();
00034
00035
00036
00037
00038
00042 UInt_t sendInitMessage(UInt_t fuResourceId, UInt_t outModId,
00043 UInt_t fuProcessId, UInt_t fuGuid, UChar_t*data, UInt_t dataSize,
00044 UInt_t nExpectedEPs) throw (evf::Exception);
00045
00049 UInt_t sendDataEvent(UInt_t fuResourceId, UInt_t runNumber,
00050 UInt_t evtNumber, UInt_t outModId, UInt_t fuProcessId,
00051 UInt_t fuGuid, UChar_t*data, UInt_t dataSize)
00052 throw (evf::Exception);
00053
00057 UInt_t sendErrorEvent(UInt_t fuResourceId, UInt_t runNumber,
00058 UInt_t evtNumber, UInt_t fuProcessId, UInt_t fuGuid, UChar_t*data,
00059 UInt_t dataSize) throw (evf::Exception);
00060
00064 UInt_t sendDqmEvent(UInt_t fuDqmId, UInt_t runNumber, UInt_t evtAtUpdate,
00065 UInt_t folderId, UInt_t fuProcessId, UInt_t fuGuid, UChar_t*data,
00066 UInt_t dataSize) throw (evf::Exception);
00067
00068 private:
00069
00070
00071
00072 MemRef_t* createFragmentChain(UShort_t i2oFunctionCode, UInt_t headerSize,
00073 UChar_t *data, UInt_t dataSize, UInt_t &totalSize)
00074 throw (evf::Exception);
00075
00076 private:
00077
00078
00079
00080 Logger log_;
00081 xdaq::ApplicationDescriptor *fuAppDesc_;
00082 xdaq::ApplicationDescriptor *smAppDesc_;
00083 xdaq::ApplicationContext *fuAppContext_;
00084 toolbox::mem::Pool *i2oPool_;
00085
00086 UInt_t initHeaderSize_;
00087 UInt_t dataHeaderSize_;
00088 UInt_t dqmHeaderSize_;
00089
00090 std::string fuUrl_;
00091 std::string fuClassName_;
00092
00093 };
00094
00095 }
00096
00097
00098 #endif