summaryrefslogtreecommitdiff
path: root/Sockets/StreamSocket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Sockets/StreamSocket.cpp')
-rw-r--r--Sockets/StreamSocket.cpp169
1 files changed, 169 insertions, 0 deletions
diff --git a/Sockets/StreamSocket.cpp b/Sockets/StreamSocket.cpp
new file mode 100644
index 0000000..5c5780e
--- /dev/null
+++ b/Sockets/StreamSocket.cpp
@@ -0,0 +1,169 @@
+#include "StreamSocket.h"
+#include "ISocketHandler.h"
+
+
+#ifdef SOCKETS_NAMESPACE
+namespace SOCKETS_NAMESPACE {
+#endif
+
+
+StreamSocket::StreamSocket(ISocketHandler& h) : Socket(h)
+,m_bConnecting(false)
+,m_connect_timeout(5)
+,m_flush_before_close(true)
+,m_connection_retry(0)
+,m_retries(0)
+,m_call_on_connect(false)
+,m_b_retry_connect(false)
+,m_line_protocol(false)
+,m_shutdown(0)
+{
+}
+
+
+StreamSocket::~StreamSocket()
+{
+}
+
+
+void StreamSocket::SetConnecting(bool x)
+{
+ if (x != m_bConnecting)
+ {
+ m_bConnecting = x;
+ if (x)
+ {
+ SetTimeout( GetConnectTimeout() );
+ }
+ else
+ {
+ SetTimeout( 0 );
+ }
+ }
+}
+
+
+bool StreamSocket::Connecting()
+{
+ return m_bConnecting;
+}
+
+
+bool StreamSocket::Ready()
+{
+ if (GetSocket() != INVALID_SOCKET && !Connecting() && !CloseAndDelete())
+ return true;
+ return false;
+}
+
+
+void StreamSocket::SetConnectTimeout(int x)
+{
+ m_connect_timeout = x;
+}
+
+
+int StreamSocket::GetConnectTimeout()
+{
+ return m_connect_timeout;
+}
+
+
+void StreamSocket::SetFlushBeforeClose(bool x)
+{
+ m_flush_before_close = x;
+}
+
+
+bool StreamSocket::GetFlushBeforeClose()
+{
+ return m_flush_before_close;
+}
+
+
+int StreamSocket::GetConnectionRetry()
+{
+ return m_connection_retry;
+}
+
+
+void StreamSocket::SetConnectionRetry(int x)
+{
+ m_connection_retry = x;
+}
+
+
+int StreamSocket::GetConnectionRetries()
+{
+ return m_retries;
+}
+
+
+void StreamSocket::IncreaseConnectionRetries()
+{
+ m_retries++;
+}
+
+
+void StreamSocket::ResetConnectionRetries()
+{
+ m_retries = 0;
+}
+
+
+void StreamSocket::SetCallOnConnect(bool x)
+{
+ Handler().AddList(GetSocket(), LIST_CALLONCONNECT, x);
+ m_call_on_connect = x;
+}
+
+
+bool StreamSocket::CallOnConnect()
+{
+ return m_call_on_connect;
+}
+
+
+void StreamSocket::SetRetryClientConnect(bool x)
+{
+ Handler().AddList(GetSocket(), LIST_RETRY, x);
+ m_b_retry_connect = x;
+}
+
+
+bool StreamSocket::RetryClientConnect()
+{
+ return m_b_retry_connect;
+}
+
+
+void StreamSocket::SetLineProtocol(bool x)
+{
+ m_line_protocol = x;
+}
+
+
+bool StreamSocket::LineProtocol()
+{
+ return m_line_protocol;
+}
+
+
+void StreamSocket::SetShutdown(int x)
+{
+ m_shutdown = x;
+}
+
+
+int StreamSocket::GetShutdown()
+{
+ return m_shutdown;
+}
+
+
+
+
+#ifdef SOCKETS_NAMESPACE
+} // namespace SOCKETS_NAMESPACE {
+#endif
+