comparison C++/SocketTcp.h @ 316:4c0af1143fc4

Add wait operation (no tests yet)
author David Demelier <markand@malikania.fr>
date Tue, 03 Mar 2015 18:48:54 +0100
parents c9356cb38c86
children 68ae6d7dea1f
comparison
equal deleted inserted replaced
315:c9356cb38c86 316:4c0af1143fc4
45 result.resize(n); 45 result.resize(n);
46 46
47 return result; 47 return result;
48 } 48 }
49 49
50 inline std::string waitRecv(unsigned count, int timeout)
51 {
52 std::string result;
53
54 result.resize(count);
55 auto n = waitRecv(const_cast<char *>(result.data()), count, timeout);
56 result.resize(n);
57
58 return result;
59 }
60
50 inline unsigned send(const std::string &data) 61 inline unsigned send(const std::string &data)
51 { 62 {
52 return send(data.c_str(), data.size()); 63 return send(data.c_str(), data.size());
53 } 64 }
54 65
66 inline unsigned waitSend(const std::string &data, int timeout)
67 {
68 return waitSend(data.c_str(), data.size(), timeout);
69 }
70
55 virtual unsigned recv(void *data, unsigned length) = 0; 71 virtual unsigned recv(void *data, unsigned length) = 0;
56 72
73 virtual unsigned waitRecv(void *data, unsigned length, int timeout) = 0;
74
57 virtual unsigned send(const void *data, unsigned length) = 0; 75 virtual unsigned send(const void *data, unsigned length) = 0;
76
77 virtual unsigned waitSend(const void *data, unsigned length, int timeout) = 0;
58 }; 78 };
59 79
60 /** 80 /**
61 * @class SocketTcp 81 * @class SocketTcp
62 * @brief End-user class for TCP sockets 82 * @brief End-user class for TCP sockets
69 89
70 SocketTcp accept(); 90 SocketTcp accept();
71 91
72 SocketTcp accept(SocketAddress &info); 92 SocketTcp accept(SocketAddress &info);
73 93
94 SocketTcp waitAccept(int timeout);
95
96 SocketTcp waitAccept(SocketAddress &info, int timeout);
97
74 void connect(const SocketAddress &address); 98 void connect(const SocketAddress &address);
99
100 void waitConnect(const SocketAddress &address, int timeout);
75 101
76 unsigned recv(void *data, unsigned length) override; 102 unsigned recv(void *data, unsigned length) override;
77 103
104 unsigned waitRecv(void *data, unsigned length, int timeout) override;
105
78 unsigned send(const void *data, unsigned length) override; 106 unsigned send(const void *data, unsigned length) override;
107
108 unsigned waitSend(const void *data, unsigned length, int timeout) override;
79 }; 109 };
80 110
81 #endif // !_SOCKET_TCP_NG_3_H_ 111 #endif // !_SOCKET_TCP_NG_3_H_