Belle II Software  release-05-01-25
rawrb2sockr.cc
1 //+
2 // File : rawrb2sockr.cc
3 // Description : Get an event from RingBuffer and send it to socket
4 // Reverse Connection
5 //
6 // Author : Ryosuke Itoh, IPNS, KEK
7 // Date : 25 - Jul - 2013
8 //-
9 #include <string>
10 
11 #include <signal.h>
12 
13 #include "daq/rfarm/event/RawRevRb2Sock.h"
14 
15 using namespace Belle2;
16 using namespace std;
17 
18 static RawRevRb2Sock* s_body = NULL;
19 
20 void sigint_handler(int signum)
21 {
22  printf("rawrb2sockr : aborted\n");
23  delete s_body;
24  exit(-1);
25 }
26 
27 
28 int main(int argc, char** argv)
29 {
30  // Retrieve RingBuffer name[1], port number[2], Shmname[3], and id[4]
31  if (argc < 5) {
32  printf("syntax : rb2sock rbufname port\n");
33  exit(-1);
34  }
35 
36  signal(SIGINT, sigint_handler);
37  signal(SIGTERM, sigint_handler);
38 
39  string a1(argv[1]);
40  int a2 = atoi(argv[2]);
41  string a3(argv[3]);
42  int a4 = atoi(argv[4]);
43 
44  RawRevRb2Sock* rs = new RawRevRb2Sock(a1, a2, a3, a4);
45  // RawRevRb2Sock rs(a1, a2, a3, a4);
46  s_body = rs;
47 
48  int nevt = 0;
49  for (;;) {
50  // int stat = rs.SendEvent();
51  int stat = rs->SendEvent();
52  // printf ( "rb2sock : sending %d\n", stat );
53  if (stat <= 0) {
54  printf("rb2sock : error in sending event. The event is lost. Reconnecting....\n");
55  // rs.Reconnect();
56  rs->Reconnect();
57  printf("rb2sock : reconnected.\n");
58  }
59  nevt++;
60  if (nevt % 5000 == 0) {
61  printf("rawrb2sockr : evt = %d\n", nevt);
62  }
63  }
64  exit(0);
65 }
66 
67 
68 
main
int main(int argc, char **argv)
Run all tests.
Definition: test_main.cc:77
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::RawRevRb2Sock::Reconnect
int Reconnect(void)
Reconnect.
Definition: RawRevRb2Sock.cc:48
Belle2::RawRevRb2Sock::SendEvent
int SendEvent(void)
Event function.
Definition: RawRevRb2Sock.cc:32
Belle2::RawRevRb2Sock
Definition: RawRevRb2Sock.h:35