merge the trunk with the development of ZeroMQ branch

git-svn-id: https://subversion.gsi.de/fairroot/fairbase/trunk@22451 0381ead4-6506-0410-b988-94b70fbc4730
This commit is contained in:
Mohammad Al-Turany
2013-10-25 12:42:48 +00:00
parent d65d7e490f
commit 5121fe3ae5
36 changed files with 1291 additions and 727 deletions

View File

@@ -2,7 +2,7 @@
* FairMQDevice.h
*
* @since Oct 25, 2012
* @authors: D. Klein
* @authors: D. Klein, A. Rybalchenko
*/
#ifndef FAIRMQDEVICE_H_
@@ -13,62 +13,75 @@
#include <vector>
#include "FairMQContext.h"
#include "FairMQSocket.h"
#include <stdexcept>
//#include "FairMQLogger.h"
#include "Rtypes.h"
#include "TString.h"
class FairMQDevice : /*public FairMQStateMachine,*/ public FairMQConfigurable
class FairMQDevice : public FairMQStateMachine, public FairMQConfigurable
{
protected:
TString fId;
Int_t fNumIoThreads;
FairMQContext* fPayloadContext;
std::vector<TString> *fBindAddress;
std::vector<Int_t> *fBindSocketType;
std::vector<Int_t> *fBindSndBufferSize;
std::vector<Int_t> *fBindRcvBufferSize;
std::vector<TString> *fConnectAddress;
std::vector<Int_t> *fConnectSocketType;
std::vector<Int_t> *fConnectSndBufferSize;
std::vector<Int_t> *fConnectRcvBufferSize;
std::vector<FairMQSocket*> *fPayloadInputs;
std::vector<FairMQSocket*> *fPayloadOutputs;
Int_t fLogIntervalInMs;
Int_t fNumInputs;
Int_t fNumOutputs;
public:
enum {
Id = FairMQConfigurable::Last,
NumIoThreads,
NumInputs,
NumOutputs,
BindAddress,
BindSocketType,
BindSndBufferSize,
BindRcvBufferSize,
ConnectAddress,
ConnectSocketType,
ConnectSndBufferSize,
ConnectRcvBufferSize,
InputAddress,
InputMethod,
InputSocketType,
InputSndBufSize,
InputRcvBufSize,
OutputAddress,
OutputMethod,
OutputSocketType,
OutputSndBufSize,
OutputRcvBufSize,
LogIntervalInMs,
Last
};
FairMQDevice();
virtual void LogSocketRates();
virtual void ListenToCommands();
virtual void SetProperty(const Int_t& key, const TString& value, const Int_t& slot = 0);
virtual TString GetProperty(const Int_t& key, const TString& default_ = "", const Int_t& slot = 0);
virtual void SetProperty(const Int_t& key, const Int_t& value, const Int_t& slot = 0);
virtual Int_t GetProperty(const Int_t& key, const Int_t& default_ = 0, const Int_t& slot = 0);
virtual ~FairMQDevice();
protected:
TString fId;
Int_t fNumIoThreads;
FairMQContext* fPayloadContext;
Int_t fNumInputs;
Int_t fNumOutputs;
std::vector<TString> *fInputAddress;
std::vector<TString> *fInputMethod;
std::vector<Int_t> *fInputSocketType;
std::vector<Int_t> *fInputSndBufSize;
std::vector<Int_t> *fInputRcvBufSize;
std::vector<TString> *fOutputAddress;
std::vector<TString> *fOutputMethod;
std::vector<Int_t> *fOutputSocketType;
std::vector<Int_t> *fOutputSndBufSize;
std::vector<Int_t> *fOutputRcvBufSize;
std::vector<FairMQSocket*> *fPayloadInputs;
std::vector<FairMQSocket*> *fPayloadOutputs;
Int_t fLogIntervalInMs;
virtual void Init();
virtual void Bind();
virtual void Connect();
virtual void Run();
virtual void Pause();
virtual void Shutdown();
virtual void* LogSocketRates();
static void* callLogSocketRates(void* arg) { return ((FairMQDevice*)arg)->LogSocketRates(); }
virtual void SetProperty(Int_t key, TString value, Int_t slot = 0);
virtual TString GetProperty(Int_t key, TString default_ = "", Int_t slot = 0);
virtual void SetProperty(Int_t key, Int_t value, Int_t slot = 0);
virtual Int_t GetProperty(Int_t key, Int_t default_ = 0, Int_t slot = 0);
virtual ~FairMQDevice();
virtual void InitOutput();
virtual void InitInput();
};
#endif /* FAIRMQDEVICE_H_ */