Belle II Software
release-05-01-25
Sock2Rb.cc
1
//+
2
// File : Sock2Rb.cc
3
// Description : Receive events from Socket and place them in Rbuf
4
//
5
// Author : Ryosuke Itoh, IPNS, KEK
6
// Date : 26 - Apr - 2012
7
//-
8
9
#include "daq/rfarm/event/Sock2Rb.h"
10
11
#include <unistd.h>
12
13
using namespace
std;
14
using namespace
Belle2
;
15
16
Sock2Rb::Sock2Rb(
string
rbuf,
int
port)
17
{
18
// m_rbuf = new RingBuffer(rbuf.c_str(), RBUFSIZE);
19
m_rbuf =
new
RingBuffer
(rbuf.c_str());
20
m_sock =
new
EvtSocketRecv
(port);
21
m_evtbuf =
new
char
[MAXEVTSIZE];
22
23
}
24
25
Sock2Rb::~Sock2Rb(
void
)
26
{
27
delete
m_sock;
28
delete
m_rbuf;
29
}
30
31
int
Sock2Rb::ReceiveEvent(
void
)
32
{
33
// Get a record from socket
34
EvtMessage
* msg = m_sock->recv();
35
if
(msg == NULL) {
36
return
0;
37
}
38
// B2INFO ( "Rx: got an event from Socket, size=" << msg->size() );
39
if
(msg->
type
() == MSG_TERMINATE) {
40
return
0;
41
// Flag End Of File !!!!!
42
// return msg->type(); // EOF
43
}
44
45
// Put the message in ring buffer
46
int
stat = 0;
47
for
(;;) {
48
stat = m_rbuf->insq((
int
*)msg->
buffer
(), msg->
paddedSize
());
49
if
(stat >= 0)
break
;
50
// usleep(100);
51
usleep(20);
52
}
53
delete
msg;
54
return
stat;
55
}
56
Belle2::EvtMessage::paddedSize
int paddedSize() const
Same as size(), but as size of an integer array.
Definition:
EvtMessage.cc:100
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
Belle2::EvtMessage::buffer
char * buffer()
Get buffer address.
Definition:
EvtMessage.cc:77
Belle2::EvtSocketRecv
Definition:
EvtSocket.h:47
daq
rfarm
event
src
Sock2Rb.cc
Generated on Fri Nov 5 2021 03:49:36 for Belle II Software by
1.8.17