KaliVeda  1.13/01
Heavy-Ion Analysis Toolkit
KVZMQMessage.h
Go to the documentation of this file.
1 #ifndef KVZMQMESSAGE_H
2 #define KVZMQMESSAGE_H
3 #include "TMessage.h"
4 #include "TClass.h"
5 #include "zmq.hpp"
6 #include "KVConfig.h"
7 
45 class KVZMQMessage : public TMessage {
46  std::unique_ptr<TObject> fObject;
48  zmq::message_t fMessage;
49 
50 public:
53  {
55  }
56  KVZMQMessage(zmq::message_t& g)
57  : TMessage(g.data(), g.size())
58  {
63  }
64  virtual ~KVZMQMessage() {}
65 #if ROOT_VERSION_CODE < ROOT_VERSION(6,12,0)
66  virtual void WriteObject(const TObject* obj)
67  {
69 #else
70  virtual void WriteObject(const TObject* obj, Bool_t cacheReuse = kTRUE)
71  {
72  TMessage::WriteObject(obj, cacheReuse);
73 #endif
74  SetLength();
75  }
76  zmq::message_t& GetMessage()
77  {
78  fMessage.rebuild(Buffer(), Length());
79  return fMessage;
80  }
82  {
83  if (fReadNewObject) {
84  fObject.reset(ReadObject(GetClass()));
86  }
87  return fObject.get();
88  }
89  template <class T>
91  {
92  if (GetClass()->InheritsFrom(T::Class())) {
93  return (T*)(GetObject());
94  }
95  return nullptr;
96  }
97 };
98 
99 #endif // KVMESSAGE_H
kMESS_OBJECT
size_t size(const MatrixT &matrix)
const Bool_t kFALSE
bool Bool_t
const Bool_t kTRUE
Allow to send/receive ROOT/KV objects between ZeroMQ sockets.
Definition: KVZMQMessage.h:45
KVZMQMessage(zmq::message_t &g)
Definition: KVZMQMessage.h:56
virtual void WriteObject(const TObject *obj, Bool_t cacheReuse=kTRUE)
Definition: KVZMQMessage.h:70
zmq::message_t fMessage
Definition: KVZMQMessage.h:48
virtual ~KVZMQMessage()
Definition: KVZMQMessage.h:64
T * GetObject()
Definition: KVZMQMessage.h:90
zmq::message_t & GetMessage()
Definition: KVZMQMessage.h:76
std::unique_ptr< TObject > fObject
Definition: KVZMQMessage.h:46
Bool_t fReadNewObject
Definition: KVZMQMessage.h:47
TObject * GetObject()
Definition: KVZMQMessage.h:81
TObject * ReadObject(const TClass *cl) override
Int_t WriteObject(const T *objptr, Bool_t cacheReuse=kTRUE)
char * Buffer() const
Int_t Length() const
void SetLength() const
TClass * GetClass() const
virtual Bool_t InheritsFrom(const char *classname) const
void ResetBit(UInt_t f)
const long double g
masses
Definition: KVUnits.h:72
double T(double x)