Belle II Software
release-05-01-25
Rb2Sock.cc
1
//+
2
// File : Rb2Sock.cc
3
// Description : Send events in RingBuffer to Socket
4
//
5
// Author : Ryosuke Itoh, IPNS, KEK
6
// Date : 26 - Apr - 2012
7
//-
8
9
#include "daq/rfarm/event/Rb2Sock.h"
10
11
#include <unistd.h>
12
13
using namespace
std;
14
using namespace
Belle2
;
15
16
Rb2Sock::Rb2Sock(
string
rbuf,
string
dest,
int
port)
17
{
18
// m_rbuf = new RingBuffer(rbuf.c_str(), RBUFSIZE);
19
m_rbuf =
new
RingBuffer
(rbuf.c_str());
20
m_sock =
new
EvtSocketSend
(dest, port);
21
m_evtbuf =
new
char
[MAXEVTSIZE];
22
23
}
24
25
Rb2Sock::~Rb2Sock(
void
)
26
{
27
delete
m_sock;
28
delete
m_rbuf;
29
}
30
31
int
Rb2Sock::SendEvent(
void
)
32
{
33
// Get a record from ringbuf
34
int
size;
35
while
((size = m_rbuf->remq((
int
*)m_evtbuf)) == 0) {
36
// printf ( "Rx : evtbuf is not available yet....\n" );
37
// usleep(100);
38
usleep(20);
39
}
40
41
EvtMessage
* msg =
new
EvtMessage
(m_evtbuf);
// Ptr copy, no overhead
42
43
if
(msg->
type
() == MSG_TERMINATE) {
44
printf(
"EoF found. Exitting.....\n"
);
45
m_sock->send(msg);
46
delete
msg;
47
return
-1;
48
}
else
{
49
int
is = m_sock->send(msg);
50
delete
msg;
51
return
is;
52
// return msg->size();
53
}
54
}
55
Belle2::EvtSocketSend
Definition:
EvtSocket.h:26
Belle2::EvtMessage::type
ERecordType type() const
Get record type.
Definition:
EvtMessage.cc:115
Belle2::EvtMessage
Class to manage streamed object.
Definition:
EvtMessage.h:60
Belle2::RingBuffer
Class to manage a Ring Buffer placed in an IPC shared memory.
Definition:
RingBuffer.h:36
Belle2
Abstract base class for different kinds of events.
Definition:
MillepedeAlgorithm.h:19
daq
rfarm
event
src
Rb2Sock.cc
Generated on Fri Nov 5 2021 03:49:35 for Belle II Software by
1.8.17