From fffd213c8cba2135afda493d797c41c10354770e Mon Sep 17 00:00:00 2001 From: Othmar Gsenger Date: Sat, 12 Apr 2008 11:38:42 +0000 Subject: big svn cleanup --- src/Sockets/tests/retry.cpp | 67 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/Sockets/tests/retry.cpp (limited to 'src/Sockets/tests/retry.cpp') diff --git a/src/Sockets/tests/retry.cpp b/src/Sockets/tests/retry.cpp new file mode 100644 index 0000000..36954a6 --- /dev/null +++ b/src/Sockets/tests/retry.cpp @@ -0,0 +1,67 @@ +#include +#include +#include + + + bool quit = false; + +/* + virtual bool OnConnectRetry(); +- void SetRetryClientConnect(bool x = true); +- bool RetryClientConnect(); + void SetConnectionRetry(int n); + int GetConnectionRetry(); + void IncreaseConnectionRetries(); + int GetConnectionRetries(); + void ResetConnectionRetries(); +*/ +class RetrySocket : public TcpSocket +{ +public: + RetrySocket(ISocketHandler& h) : TcpSocket(h) { + SetConnectTimeout(2); + SetConnectionRetry(-1); + } + + bool OnConnectRetry() { + printf("Connection attempt#%d\n", GetConnectionRetries()); + if (GetConnectionRetries() == 3) + { + ListenSocket *l = new ListenSocket(Handler()); + if (l -> Bind(12345)) + { + printf("Bind port 12345 failed\n"); + } + l -> SetDeleteByHandler(); + Handler().Add(l); + } + return true; + } + + void OnConnect() { + printf("Connected\n"); + printf("GetRemoteAddress(): %s\n", GetRemoteAddress().c_str()); + printf("Remote address: %s\n", GetRemoteSocketAddress() -> Convert(false).c_str()); + printf("Remote address: %s\n", GetRemoteSocketAddress() -> Convert(true).c_str()); + SetCloseAndDelete(); + } + + void OnDelete() { + quit = true; + } +}; + + +int main(int argc, char *argv[]) +{ + SocketHandler h; + RetrySocket sock(h); + sock.Open("localhost", 12345); + h.Add(&sock); + while (!quit) + { + h.Select(0, 200000); + } +} + + -- cgit v1.2.3