Go to the documentation of this file.00001 #ifndef SMPROXY_H
00002 #define SMPROXY_H
00003
00004
00005 #include "EventFilter/ResourceBroker/interface/FUTypes.h"
00006 #include "EventFilter/Utilities/interface/i2oEvfMsgs.h"
00007 #include "EventFilter/Utilities/interface/Exception.h"
00008 #include "xdaq/Application.h"
00009
00010
00011 #include <string>
00012
00013
00014 namespace evf {
00015
00016 class SMProxy
00017 {
00018 public:
00019
00020
00021
00022 SMProxy(xdaq::ApplicationDescriptor *fuAppDesc,
00023 xdaq::ApplicationDescriptor *smAppDesc,
00024 xdaq::ApplicationContext *fuAppContext,
00025 toolbox::mem::Pool *i2oPool);
00026 virtual ~SMProxy();
00027
00028
00029
00030
00031
00032 UInt_t sendInitMessage(UInt_t fuResourceId,
00033 UInt_t outModId,
00034 UInt_t fuProcessId,
00035 UInt_t fuGuid,
00036 UChar_t*data,
00037 UInt_t dataSize) throw (evf::Exception);
00038
00039 UInt_t sendDataEvent(UInt_t fuResourceId,
00040 UInt_t runNumber,
00041 UInt_t evtNumber,
00042 UInt_t outModId,
00043 UInt_t fuProcessId,
00044 UInt_t fuGuid,
00045 UChar_t*data,
00046 UInt_t dataSize) throw (evf::Exception);
00047
00048 UInt_t sendErrorEvent(UInt_t fuResourceId,
00049 UInt_t runNumber,
00050 UInt_t evtNumber,
00051 UInt_t fuProcessId,
00052 UInt_t fuGuid,
00053 UChar_t*data,
00054 UInt_t dataSize) throw (evf::Exception);
00055
00056 UInt_t sendDqmEvent(UInt_t fuDqmId,
00057 UInt_t runNumber,
00058 UInt_t evtAtUpdate,
00059 UInt_t folderId,
00060 UInt_t fuProcessId,
00061 UInt_t fuGuid,
00062 UChar_t*data,
00063 UInt_t dataSize) throw (evf::Exception);
00064
00065
00066 private:
00067
00068
00069
00070 MemRef_t* createFragmentChain(UShort_t i2oFunctionCode,
00071 UInt_t headerSize,
00072 UChar_t *data,
00073 UInt_t dataSize,
00074 UInt_t &totalSize) 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