BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnOnlineSource.h
Go to the documentation of this file.
1
#ifndef BMN_ONLINE_SOURCE_H
2
#define BMN_ONLINE_SOURCE_H
3
4
#include <FairOnlineSource.h>
5
#include <
TClonesArray.h
>
6
#include <
TMessage.h
>
7
#include <
TString.h
>
8
#include <
TTree.h
>
9
#include <zmq.h>
10
11
class
_CustomTMessage
:
public
TMessage
12
{
13
public
:
14
_CustomTMessage
(
void
* buf,
Int_t
len)
15
:
TMessage
(buf, len)
16
{
17
ResetBit
(
kIsOwner
);
18
}
19
};
20
21
class
BmnOnlineSource
:
public
FairOnlineSource
22
{
23
public
:
24
BmnOnlineSource
(
TString
endpoint =
"tcp://localhost:5555"
);
25
virtual
~BmnOnlineSource
();
26
27
virtual
Bool_t
Init
();
28
virtual
Int_t
ReadEvent
(
UInt_t
= 0);
29
virtual
void
Close
();
30
31
BmnOnlineSource
(
const
BmnOnlineSource
&) =
delete
;
32
BmnOnlineSource
&
operator=
(
const
BmnOnlineSource
&) =
delete
;
33
34
template
<
typename
T>
35
static
void
DeserializeZmqMessage
(zmq_msg_t* zmq_message, std::unique_ptr<T>& output)
36
{
37
_CustomTMessage
_message(zmq_msg_data(zmq_message), zmq_msg_size(zmq_message));
38
39
output.reset(
static_cast<
T*
>
(_message.
ReadObjectAny
(_message.
GetClass
())));
40
};
41
42
protected
:
43
TString
fEndpoint
;
44
45
std::shared_ptr<void>
fZmqContext
;
46
std::shared_ptr<void>
fZmqSubSocket
;
47
48
std::unordered_map<std::string, std::unique_ptr<TClonesArray>>
fRegisteredBranches
;
49
50
void
RegisterBranches
(std::unique_ptr<TTree>& tree);
51
void
UploadDataToRegisteredBranches
(std::unique_ptr<TTree>& tree);
52
53
private
:
54
Bool_t
fAreBranchesRegistered
;
55
56
ClassDef
(
BmnOnlineSource
, 0)
57
};
58
59
#endif
// BMN_ONLINE_SOURCE_H
Bool_t
bool Bool_t
Int_t
int Int_t
UInt_t
unsigned int UInt_t
ClassDef
#define ClassDef(name, id)
TClonesArray.h
TMessage.h
TString.h
TTree.h
BmnOnlineSource::fZmqContext
std::shared_ptr< void > fZmqContext
Definition
BmnOnlineSource.h:45
BmnOnlineSource::DeserializeZmqMessage
static void DeserializeZmqMessage(zmq_msg_t *zmq_message, std::unique_ptr< T > &output)
Definition
BmnOnlineSource.h:35
BmnOnlineSource::fAreBranchesRegistered
Bool_t fAreBranchesRegistered
Definition
BmnOnlineSource.h:54
BmnOnlineSource::fZmqSubSocket
std::shared_ptr< void > fZmqSubSocket
Definition
BmnOnlineSource.h:46
BmnOnlineSource::ReadEvent
virtual Int_t ReadEvent(UInt_t=0)
Definition
BmnOnlineSource.cxx:39
BmnOnlineSource::fRegisteredBranches
std::unordered_map< std::string, std::unique_ptr< TClonesArray > > fRegisteredBranches
Definition
BmnOnlineSource.h:48
BmnOnlineSource::operator=
BmnOnlineSource & operator=(const BmnOnlineSource &)=delete
BmnOnlineSource::RegisterBranches
void RegisterBranches(std::unique_ptr< TTree > &tree)
Definition
BmnOnlineSource.cxx:75
BmnOnlineSource::UploadDataToRegisteredBranches
void UploadDataToRegisteredBranches(std::unique_ptr< TTree > &tree)
Definition
BmnOnlineSource.cxx:102
BmnOnlineSource::BmnOnlineSource
BmnOnlineSource(const BmnOnlineSource &)=delete
BmnOnlineSource::~BmnOnlineSource
virtual ~BmnOnlineSource()
Definition
BmnOnlineSource.cxx:13
BmnOnlineSource::fEndpoint
TString fEndpoint
Definition
BmnOnlineSource.h:43
BmnOnlineSource::Init
virtual Bool_t Init()
Definition
BmnOnlineSource.cxx:15
BmnOnlineSource::BmnOnlineSource
BmnOnlineSource(TString endpoint="tcp://localhost:5555")
Definition
BmnOnlineSource.cxx:6
BmnOnlineSource::Close
virtual void Close()
Definition
BmnOnlineSource.cxx:67
FairOnlineSource
TBufferFile::ReadObjectAny
void * ReadObjectAny(const TClass *cast) override
TBuffer::kIsOwner
kIsOwner
TMessage::TMessage
TMessage(UInt_t what=kMESS_ANY, Int_t bufsize=TBuffer::kInitialSize)
TMessage::GetClass
TClass * GetClass() const
TObject::ResetBit
void ResetBit(UInt_t f)
TString
_CustomTMessage
Definition
BmnOnlineSource.h:12
_CustomTMessage::_CustomTMessage
_CustomTMessage(void *buf, Int_t len)
Definition
BmnOnlineSource.h:14
base
source
BmnOnlineSource.h
Generated on
for BmnRoot by
1.17.0