00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 #if !defined(AFX_TCPSOCKETASYNCDELEGATOR_H__E2DEE665_2EE9_4740_B7B9_D598F7E6E981__INCLUDED_)
00037 #define AFX_TCPSOCKETASYNCDELEGATOR_H__E2DEE665_2EE9_4740_B7B9_D598F7E6E981__INCLUDED_
00038 
00039 #if _MSC_VER > 1000
00040 #pragma once
00041 #endif // _MSC_VER > 1000
00042 
00043 #include "ErrorHandler.h"
00044 
00045 #include "SocketBase.h"
00046 
00047 KOMODIA_NAMESPACE_START
00048 
00049 class CTCPSocket;
00050 class CTCPSocketAsync;
00051 
00052 class CTCPSocketAsyncDelegator : public CErrorHandler  
00053 {
00054 public:
00055     
00056     
00057     
00058     BOOL SocketConnected(int iErrorCode,
00059                          BOOL bNoEvent=FALSE);
00060 
00061     
00062     BOOL LocalSocketReceive(int iErrorCode,
00063                             BOOL bNoEvent=FALSE);
00064 
00065     
00066     
00067     BOOL LocalSocketConnect(int iErrorCode,
00068                             BOOL bNoEvent);
00069 
00070     
00071     BOOL LocalSocketClose(int iErrorCode,
00072                           BOOL bNoEvent);
00073 
00074     
00075     BOOL LocalSocketAccept(int iErrorCode,
00076                            BOOL bNoEvent);
00077 
00078     
00079     BOOL OnSocketConnect(int iErrorCode);
00080 
00081     
00082     
00083     BOOL LocalConnect(unsigned short usSourcePort,
00084                       IP aDestinationAddress,
00085                       unsigned short usDestinationPort,
00086                       BOOL bDisableAsync,
00087                       BOOL bForceErrorEvent);
00088 
00089     
00090     BOOL LocalBind(IP aSourceAddress,
00091                    unsigned short usPort);
00092 
00093     
00094     IP LocalGetBindAddress()const;
00095 
00096     
00097     unsigned short LocalGetBindPort()const;
00098 
00099     
00100     BOOL LocalListen(unsigned long ulBackLog);
00101 
00102     
00103     BOOL LocalAccept(CTCPSocket* pNewSocket);
00104 
00105     
00106     
00107     void SetAcceptance(CTCPSocket* pNewSocket,
00108                        SOCKET aSocket,
00109                        sockaddr_in aAddress)const;
00110 
00111     
00112     void SystemTimeout();
00113 
00114     
00115     void SetConnectedTo(const sockaddr_in& rAddress);
00116 
00117     
00118     void SwitchEventsType();
00119 
00120     
00121     BOOL SetAsync();
00122 
00123     
00124     BOOL ClearEvents();
00125 
00126     
00127     SOCKET Detach();
00128 
00129     
00130     CTCPSocketAsyncDelegator(CTCPSocketAsync* pSocket);
00131     virtual ~CTCPSocketAsyncDelegator();
00132 protected:
00133     
00134     CTCPSocketAsync* GetSocket()const;
00135 private:
00136     
00137     CTCPSocketAsyncDelegator(const CTCPSocketAsyncDelegator& rDelegator);
00138 
00139     
00140     CTCPSocketAsyncDelegator& operator=(const CTCPSocketAsyncDelegator& rDelegator);
00141 
00142     
00143     CTCPSocketAsync* m_pSocket;
00144 };
00145 
00146 KOMODIA_NAMESPACE_END
00147 
00148 #endif // !defined(AFX_TCPSOCKETASYNCDELEGATOR_H__E2DEE665_2EE9_4740_B7B9_D598F7E6E981__INCLUDED_)