Belle II Software  release-08-01-10
RSocketLib.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 #ifndef RSOCKETLIB_H
9 #define RSOCKETLIB_H
10 
11 #include <netinet/in.h>
12 
13 #define D2_SOCKBUF_SIZE 8000000
14 
15 #include "daq/dataflow/SocketLib.h"
16 
17 typedef unsigned short u_short;
18 
19 namespace Belle2 {
25  class RSocketSend : public SocketIO {
26  public:
27  RSocketSend(u_short port);
28  ~RSocketSend();
29 
30  int examine();
31  int accept();
32  int close();
33 
34  int sock() const;
35  int sender() const;
36  void sock(int sockid);
37  int port() const;
38 
39  int get(char* data, int len);
40  int read(char* data, int len);
41  int put(char* data, int len);
42  int put_wordbuf(int* data, int len);
43  int write(char* data, int len);
44 
45  int err() const;
46  void interrupt();
47 
48  private:
49  SocketIO m_io;
50  int m_sock;
51  int m_port;
52  int m_sender;
53  int m_errno;
54  int m_int;
55 
56  };
57 
58  class RSocketRecv : public SocketIO {
59  public:
60  RSocketRecv(const char* node, u_short prt);
61  ~RSocketRecv();
62 
63  int reconnect(int ntry);
64 
65  int put(char* data, int len);
66  int write(char* data, int len);
67  int get(char* data, int len);
68  int get_wordbuf(int* data, int len);
69  int read(char* data, int len);
70 
71  char* node(void);
72  int port(void);
73  int sock(void);
74  void sock(int sockid);
75 
76  int err(void);
77 
78  private:
79  SocketIO m_io;
80  struct hostent* m_hp;
81  struct sockaddr_in m_sa;
82  int m_sock;
83  int m_port;
84  char m_node[128];
85  int m_errno;
86 
87  };
88 
90 }
91 #endif
92 
93 
94 
95 
96 
97 
Abstract base class for different kinds of events.