Main Page | Alphabetical List | Class List | File List | Class Members | File Members

RemoteSocket Class Reference

#include <RemoteSocket.h>

Collaboration diagram for RemoteSocket:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 RemoteSocket (ISocketHandler &)
 ~RemoteSocket ()
void SetRemote (Socks4Socket *p)
void OnConnect ()
void OnConnectFailed ()
void OnAccept ()
void OnRead ()

Private Member Functions

 RemoteSocket (const RemoteSocket &s)
RemoteSocketoperator= (const RemoteSocket &)

Private Attributes

Socks4Socketm_pRemote

Detailed Description

Definition at line 31 of file RemoteSocket.h.


Constructor & Destructor Documentation

RemoteSocket::RemoteSocket ISocketHandler &  h  ) 
 

File ......... RemoteSocket.cpp Published .... 2005-03-23 Author ....... grymse@alhem.net

Definition at line 32 of file RemoteSocket.cpp.

00033 :TcpSocket(h)
00034 ,m_pRemote(NULL)
00035 {
00036 }

RemoteSocket::~RemoteSocket  ) 
 

Definition at line 39 of file RemoteSocket.cpp.

00040 {
00041 }

RemoteSocket::RemoteSocket const RemoteSocket s  )  [inline, private]
 

Definition at line 46 of file RemoteSocket.h.

00046 : TcpSocket(s) {} // copy constructor


Member Function Documentation

void RemoteSocket::OnAccept  ) 
 

Definition at line 90 of file RemoteSocket.cpp.

References m_pRemote, and SetRemote().

00091 {
00092         Socket *p0 = static_cast<Socks4Handler&>(Handler()).GetSocks4( GetParent() );
00093         Socks4Socket *pRemote = dynamic_cast<Socks4Socket *>(p0);
00094         if (p0 && Handler().Valid(p0) && pRemote)
00095         {
00096                 SetRemote(pRemote);
00097                 pRemote -> SetRemote(this);
00098                 m_pRemote -> Accept();
00099         }
00100         else
00101         {
00102                 Handler().LogError(this, "OnAccept", 0, "Remote not valid", LOG_LEVEL_FATAL);
00103                 SetCloseAndDelete();
00104         }
00105 }

void RemoteSocket::OnConnect  ) 
 

Definition at line 44 of file RemoteSocket.cpp.

References m_pRemote.

00045 {
00046         if (m_pRemote && Handler().Valid(m_pRemote))
00047         {
00048                 m_pRemote -> Connected();
00049         }
00050         else
00051         {
00052                 Handler().LogError(this, "OnConnect", 0, "Remote not valid", LOG_LEVEL_FATAL);
00053                 SetCloseAndDelete();
00054         }
00055 }

void RemoteSocket::OnConnectFailed  ) 
 

Definition at line 58 of file RemoteSocket.cpp.

References m_pRemote.

00059 {
00060         if (m_pRemote && Handler().Valid(m_pRemote))
00061         {
00062                 m_pRemote -> ConnectFailed();
00063         }
00064         else
00065         {
00066                 Handler().LogError(this, "OnConnectFailed", 0, "Remote not valid", LOG_LEVEL_FATAL);
00067                 SetCloseAndDelete();
00068         }
00069 }

void RemoteSocket::OnRead  ) 
 

Definition at line 72 of file RemoteSocket.cpp.

References m_pRemote.

00073 {
00074         TcpSocket::OnRead();
00075         size_t l = ibuf.GetLength();
00076         char buf[TCP_BUFSIZE_READ];
00077         ibuf.Read(buf, l);
00078         if (m_pRemote && Handler().Valid(m_pRemote))
00079         {
00080                 m_pRemote -> SendBuf(buf, l);
00081         }
00082         else
00083         {
00084                 Handler().LogError(this, "OnRead", 0, "Remote not valid", LOG_LEVEL_FATAL);
00085                 SetCloseAndDelete();
00086         }
00087 }

RemoteSocket& RemoteSocket::operator= const RemoteSocket  )  [inline, private]
 

Definition at line 47 of file RemoteSocket.h.

00047 { return *this; } // assignment operator

void RemoteSocket::SetRemote Socks4Socket p  )  [inline]
 

Definition at line 37 of file RemoteSocket.h.

References m_pRemote.

Referenced by OnAccept().

00037 { m_pRemote = p; }


Member Data Documentation

Socks4Socket* RemoteSocket::m_pRemote [private]
 

Definition at line 49 of file RemoteSocket.h.

Referenced by OnAccept(), OnConnect(), OnConnectFailed(), OnRead(), and SetRemote().


The documentation for this class was generated from the following files:
Generated on Tue Oct 3 23:44:55 2006 for Socks4 Server by  doxygen 1.4.4