76 lines
1.9 KiB
C++
76 lines
1.9 KiB
C++
// IConnection.h
|
|
//
|
|
// Connection 특성과 Socket Connection, 그리고 Stream I/O 를 가지는 Socket Connection 을정의함
|
|
//
|
|
// by Testors
|
|
|
|
#pragma once
|
|
|
|
#include "XAddr.h"
|
|
#include "ISocketObject.h"
|
|
#include "IStream.h"
|
|
|
|
struct IConnection : public IBaseObject
|
|
{
|
|
virtual ~IConnection() {}
|
|
|
|
virtual bool Connect( const XAddr & addr ) = 0;
|
|
virtual bool Close() = 0;
|
|
virtual bool IsConnected() const = 0;
|
|
|
|
virtual void GetPeerAddress( XAddr & addr ) = 0;
|
|
virtual void GetMyAddress( XAddr & addr ) = 0;
|
|
|
|
virtual const XAddr & GetPeerAddress() = 0;
|
|
virtual const XAddr & GetMyAddress() = 0;
|
|
};
|
|
|
|
struct ISocketConnection : public IConnection,
|
|
public ISocketObject
|
|
{
|
|
};
|
|
|
|
struct IStreamSocketConnection : public ISocketConnection,
|
|
public IStreamIntf
|
|
{
|
|
IStreamSocketConnection()
|
|
{
|
|
m_bIsConnected = false;
|
|
|
|
m_socket.CreateStreamSocket();
|
|
}
|
|
|
|
IStreamSocketConnection( XSocket sock )
|
|
{
|
|
m_bIsConnected = false;
|
|
|
|
m_socket = sock;
|
|
}
|
|
virtual ~IStreamSocketConnection()
|
|
{
|
|
}
|
|
|
|
virtual bool Connect( const XAddr & addr ) = 0;
|
|
virtual bool Close() = 0;
|
|
virtual bool IsConnected() const { return m_bIsConnected; }
|
|
|
|
virtual bool IsValid() { return IsConnected(); }
|
|
virtual int Size() { return -1; }
|
|
|
|
virtual void GetPeerAddress( XAddr & addr ) { addr = m_peerAddr; }
|
|
virtual void GetMyAddress( XAddr & addr ) { addr = m_myAddr; }
|
|
virtual const XAddr & GetPeerAddress() { return m_peerAddr; }
|
|
virtual const XAddr & GetMyAddress() { return m_myAddr; }
|
|
|
|
|
|
bool EnableNoDelay() { BOOL bValue = TRUE; return !setsockopt( GetSocketHandle(), IPPROTO_TCP, TCP_NODELAY, (const char *) &bValue, sizeof( bValue ) ); }
|
|
bool DisableNoDelay() { BOOL bValue = FALSE; return !setsockopt( GetSocketHandle(), IPPROTO_TCP, TCP_NODELAY, (const char *) &bValue, sizeof( bValue ) ); }
|
|
|
|
protected:
|
|
|
|
XAddr m_myAddr;
|
|
XAddr m_peerAddr;
|
|
|
|
bool m_bIsConnected;
|
|
};
|