Belle II Software  release-08-01-10
SocketLib.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 SOCKETLIB_H
9 #define SOCKETLIB_H
10 
11 #include <netdb.h>
12 #include <netinet/in.h>
13 
14 #define D2_SOCKBUF_SIZE 8000000
15 
16 typedef unsigned short u_short;
17 
18 namespace Belle2 {
25  class SocketIO {
26  public:
27  SocketIO();
28  ~SocketIO();
29 
30  int put(int sock, char* data, int len);
31  int put_wordbuf(int sock, int* data, int len);
32  int get(int sock, char* data, int len);
33  int get_wordbuf(int sock, int* data, int len);
34 
35  int get_pxd(int sock, char* data, int len);
36 
37  // protected:
38  int read_data(int sock, char* data, int len);
39  int write_data(int sock, char* data, int len);
40 
41  void interrupt();
42 
43  private:
44  int m_int;
45 
46  };
47 
48  class SocketRecv : public SocketIO {
49  public:
50  SocketRecv(u_short port);
51  ~SocketRecv();
52 
53  int reconnect(int ntry);
54 
55  int examine();
56  int accept();
57  int close();
58 
59  int sock() const;
60  int sender() const;
61  void sock(int sockid);
62 
63  int get(char* data, int len);
64  int get_wordbuf(int* data, int len);
65  int read(char* data, int len);
66  int put(char* data, int len);
67  int write(char* data, int len);
68 
69  int err() const;
70  void interrupt();
71 
72  private:
73  SocketIO m_io;
74  struct hostent* m_hp;
75  struct sockaddr_in m_sa;
76  int m_port;
77  int m_sock;
78  int m_sender;
79  int m_errno;
80  int m_int;
81 
82  };
83 
84  class SocketSend : public SocketIO {
85  public:
86  SocketSend(const char* node, u_short prt);
87  ~SocketSend();
88 
89  int reconnect(int ntry);
90 
91  int put(char* data, int len);
92  int put_wordbuf(int* data, int len);
93  int write(char* data, int len);
94  int get(char* data, int len);
95  int get_pxd(char* data, int len);
96  int read(char* data, int len);
97 
98  char* node(void);
99  int port(void);
100  int sock(void);
101  void sock(int sockid);
102 
103  int err(void);
104 
105  private:
106  SocketIO m_io;
107  struct hostent* m_hp;
108  struct sockaddr_in m_sa;
109  int m_sock;
110  int m_port;
111  char m_node[128];
112  int m_errno;
113 
114  };
115 
117 }
118 #endif
119 
120 
121 
122 
123 
124 
int get_pxd(int sock, char *data, int len)
Definition: SocketLib.cc:126
Abstract base class for different kinds of events.