Belle II Software  release-05-01-25
REvtSocket.cc
1 //+
2 // File : EvtSocket.cc
3 // Description : Socket interface to transver EvtMessage
4 //
5 // Author : Ryosuke Itoh, IPNS, KEK
6 // Date : 5 - Aug - 2011
7 //-
8 
9 #include "daq/dataflow/REvtSocket.h"
10 
11 using namespace Belle2;
12 
13 // REvtSocketRecv
14 
15 REvtSocketRecv::REvtSocketRecv(std::string host, int port)
16 {
17  m_sock = new RSocketRecv(host.c_str(), (u_short)port);
18  m_recbuf = new char[MAXEVTSIZE];
19 }
20 
21 REvtSocketRecv::~REvtSocketRecv()
22 {
23  delete m_sock;
24  delete[] m_recbuf;
25 }
26 
27 int REvtSocketRecv::send(EvtMessage* msg)
28 {
29  // printf ( "REvtSocketRecv : sending = %d\n", msg->size() );
30  return m_sock->put((char*)msg->buffer(), msg->size());
31 }
32 
33 EvtMessage* REvtSocketRecv::recv()
34 {
35  int stat = m_sock->get(m_recbuf, MAXEVTSIZE);
36  if (stat <= 0) return NULL;
37  EvtMessage* evt = new EvtMessage(m_recbuf);
38  // delete [] evtbuf;
39  return evt;
40 }
41 
42 int REvtSocketRecv::send_buffer(int nbytes, char* buf)
43 {
44  return m_sock->put(buf, nbytes);
45 }
46 
47 int REvtSocketRecv::recv_buffer(char* buf)
48 {
49  int stat = m_sock->get(buf, MAXEVTSIZE);
50  return stat;
51 }
52 
53 RSocketRecv* REvtSocketRecv::sock(void)
54 {
55  return m_sock;
56 }
57 
58 // REvtSocketSend
59 
60 REvtSocketSend::REvtSocketSend(int port, bool accept_at_init)
61 {
62  m_sock = new RSocketSend((u_short)port);
63  m_recbuf = new char[MAXEVTSIZE];
64  if (accept_at_init)
65  m_sock->accept();
66 }
67 
68 REvtSocketSend::~REvtSocketSend()
69 {
70  delete m_sock;
71  delete[] m_recbuf;
72 }
73 
74 EvtMessage* REvtSocketSend::REvtSocketSend::recv()
75 {
76  int stat = m_sock->get(m_recbuf, MAXEVTSIZE);
77  if (stat <= 0) return NULL;
78  EvtMessage* evt = new EvtMessage(m_recbuf);
79  // delete [] evtbuf;
80  return evt;
81 }
82 
83 int REvtSocketSend::send(EvtMessage* msg)
84 {
85  return m_sock->put((char*)msg->buffer(), msg->size());
86 }
87 
88 int REvtSocketSend::send_buffer(int nbytes, char* buf)
89 {
90  return m_sock->put(buf, nbytes);
91 }
92 
93 int REvtSocketSend::recv_buffer(char* buf)
94 {
95  int stat = m_sock->get(buf, MAXEVTSIZE);
96  return stat;
97 }
98 
99 RSocketSend* REvtSocketSend::sock(void)
100 {
101  return m_sock;
102 }
Belle2::RSocketRecv
Definition: RSocketLib.h:58
Belle2::EvtMessage
Class to manage streamed object.
Definition: EvtMessage.h:60
Belle2::EvtMessage::size
int size() const
Get size of message including headers.
Definition: EvtMessage.cc:95
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::RSocketSend
Definition: RSocketLib.h:25
Belle2::EvtMessage::buffer
char * buffer()
Get buffer address.
Definition: EvtMessage.cc:77