1 #if !defined(_NETWORKCONNECTIONS_H_) 2 #define _NETWORKCONNECTIONS_H_ 11 #include "ThreadManager.h" 16 #include "openssl/bio.h" 17 #include <openssl/ssl.h> 18 #include <openssl/err.h> 32 #define INITIALBUFFERSIZE 4096 34 #define NETWORKERROR_ACCEPT 1 35 #define NETWORKERROR_RECEIVE 2 36 #define NETWORKERROR_SEND_ERROR 3 37 #define NETWORKERROR_SEND_TIMEOUT 4 38 #define NETWORKERROR_MEMORYFULL 5 39 #define NETWORKERROR_GREETING_ERROR 6 44 class NetworkConnection;
50 virtual bool registerError(uint16 error,
TCPListener* con) = 0;
68 friend THREAD_RET THREAD_FUNCTION_CALL TCPListenerRun(THREAD_ARG arg);
72 bool setSSLCertificate(
const char* sslCertPath,
const char* sslKeyPath);
74 bool disconnect(uint16 error = 0);
76 uint64 getLocalAddress();
89 std::string sslCertPath;
90 std::string sslKeyPath;
99 virtual bool disconnect(uint16 error = 0);
100 virtual bool reconnect() = 0;
101 virtual bool didConnect(
int timeout = 0);
102 virtual bool isConnected(
int timeout = 0);
103 virtual bool isRemote();
104 virtual uint64 getRemoteAddress();
105 bool setConnectTimeout(uint32 timeoutMS);
107 virtual bool send(
char* data, uint32 size, uint64 receiver = 0) = 0;
109 virtual bool receive(
char* data, uint32 size, uint32 timeout,
bool peek =
false);
110 virtual bool receiveAvailable(
char* data, uint32& size, uint32 maxSize, uint32 timeout,
bool peek =
false);
111 virtual bool discard(uint32 size);
112 virtual uint32 clearBuffer();
114 virtual bool waitForDataToRead(uint32 timeout);
115 virtual bool waitForDataToBeWritten(uint32 timeout);
117 virtual uint32 getOutputSpeed();
118 virtual uint32 getInputSpeed();
120 virtual uint8 getConnectionType();
122 bool setGreetingData(
const char* data, uint32 size);
128 uint64 remoteAddress;
135 uint32 bufferContentLen;
136 uint32 bufferContentPos;
141 uint32 connectTimeoutMS;
147 virtual int32 readIntoBuffer();
148 virtual bool resizeBuffer(uint32 len);
155 friend THREAD_RET THREAD_FUNCTION_CALL UDPConnectionRun(THREAD_ARG arg);
159 bool initForOutputOnly();
161 bool send(
char* data, uint32 size, uint64 receiver = 0);
163 bool setDefaultReceiver(uint64 receiver);
164 uint64 getLocalAddress();
167 uint64 defaultReceiver;
173 friend THREAD_RET THREAD_FUNCTION_CALL TCPConnectionRun(THREAD_ARG arg);
179 bool connect(
const char* addr, uint16 port, uint64& location, uint32 timeoutMS,
NetworkDataReceiver* receiver = NULL);
180 bool connect(
const uint32* addresses, uint16 addressCount, uint16 port, uint64& location, uint32 timeoutMS,
NetworkDataReceiver* receiver = NULL);
182 bool delayedConnect(
const char* addr, uint16 port, uint64& location, uint32 timeoutMS,
NetworkDataReceiver* receiver);
183 bool send(
char* data, uint32 size, uint64 receiver = 0);
187 bool findRemoteAddress(uint64& addr);
190 THREAD_RET THREAD_FUNCTION_CALL SSLConnectionRun(THREAD_ARG arg);
194 friend THREAD_RET THREAD_FUNCTION_CALL SSLConnectionRun(THREAD_ARG arg);
199 bool init(
const char *certFile,
const char *keyFile);
202 bool connect(
const char* addr, uint16 port, uint64& location, uint32 timeoutMS,
NetworkDataReceiver* receiver = NULL);
203 bool connect(
const uint32* addresses, uint16 addressCount, uint16 port, uint64& location, uint32 timeoutMS,
NetworkDataReceiver* receiver = NULL);
205 bool delayedConnect(
const char* addr, uint16 port, uint64& location, uint32 timeoutMS,
NetworkDataReceiver* receiver);
206 bool send(
char* data, uint32 size, uint64 receiver = 0);
208 bool isConnected(
int timeout = 0);
209 bool didConnect(
int timeout = 0);
210 bool disconnect(uint16 error = 0);
213 int32 readIntoBuffer();
214 bool receive(
char* data, uint32 size, uint32 timeout,
bool peek =
false);
215 bool receiveAvailable(
char* data, uint32& size, uint32 maxSize, uint32 timeout,
bool peek =
false);
217 std::string certinfo;
220 bool findRemoteAddress(uint64& addr);
229 THREAD_RET THREAD_FUNCTION_CALL TCPListenerRun(THREAD_ARG arg);
230 THREAD_RET THREAD_FUNCTION_CALL TCPConnectionRun(THREAD_ARG arg);
231 THREAD_RET THREAD_FUNCTION_CALL UDPConnectionRun(THREAD_ARG arg);
233 bool NetworkTest_TCPServer(uint16 port, uint32 count = 0);
234 bool NetworkTest_TCPClient(
const char* address, uint16 port, uint32 count = 0);
235 bool NetworkTest_SendReceiveData(
TCPConnection* con,
char* data, uint32 dataLen, uint32 c,
bool receiveFirst =
false);
239 #endif // _NETWORKCONNECTIONS_H_ Definition: NetworkConnections.h:171
Definition: NetworkConnections.h:53
Definition: NetworkConnections.h:66
Definition: ThreadManager.h:33
Definition: NetworkConnections.h:153
Definition: NetworkConnections.h:95
Definition: NetworkConnections.h:192
Definition: NetworkConnections.h:46