 |
Belle II Software
release-05-02-19
|
10 #include <framework/pcore/EvtMessage.h>
22 int roundToNearestInt(
int bytes)
24 return sizeof(int) * ((bytes +
sizeof(
int) - 1) /
sizeof(int));
28 EvtMessage::EvtMessage(
char* data):
41 int bufsize = roundToNearestInt(fullsize);
42 m_data =
new char[bufsize];
44 memset(
m_data + fullsize, 0, bufsize - fullsize);
84 UInt_t
size = *(UInt_t*)bufadr;
85 int bufsize = roundToNearestInt(
size);
86 m_data =
new char[bufsize];
88 for (
int i = bufsize -
size; i > 0; i--)
89 m_data[bufsize - i] =
'\0';
102 const int sizeBytes =
size();
104 return roundToNearestInt(sizeBytes) /
sizeof(int);
150 tv.tv_sec = (
reinterpret_cast<EvtHeader*
>(m_data))->time_sec;
151 tv.tv_usec = (
reinterpret_cast<EvtHeader*
>(m_data))->time_usec;
185 gettimeofday(&tv,
nullptr);
int paddedSize() const
Same as size(), but as size of an integer array.
EvtMessage & operator=(const EvtMessage &obj)
Assignment (m_data is copied).
bool m_ownsBuffer
Wether to clean up m_data in destructor.
ERecordType type() const
Get record type.
char * m_data
Pointer to the internal EvtMessage buffer.
Class to manage streamed object.
int dest() const
Get destination IP of message.
char * msg()
Get pointer to message body.
int size() const
Get size of message including headers.
Abstract base class for different kinds of events.
int src() const
Get source IP of message.
ERecordType
What type of message is this?
EvtHeader * header()
Get pointer to EvtHeader.
const EvtHeader * getHeader() const
Get pointer to EvtHeader.
void setMsg(const char *msg, int size, ERecordType type)
Copy message into newly allocated buffer.
void setTime(const struct timeval &time)
Set time stamp.
char * buffer()
Get buffer address.
int msg_size() const
Get size of message body.
EvtMessage(char *buf=nullptr)
build EvtMessage from existing buffer (no copy, but does not take ownership).