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 #include "stdafx.h"
00028 #include "SocketPoolSocket.h"
00029
00030 #include "ErrorHandlerMacros.h"
00031 #include "SocketPool.h"
00032
00033 KOMODIA_NAMESPACE_START
00034
00035 #define CSocketPoolSocket_Class "CSocketPoolSocket"
00036
00037 CSocketPoolSocket::CSocketPoolSocket(CSocketPool* pFather) : CTCPSocketAsync(FALSE),
00038 m_usPort(0),
00039 m_pFather(pFather)
00040 {
00041 try
00042 {
00043
00044 SetName(CSocketPoolSocket_Class);
00045 }
00046 ERROR_HANDLER("CSocketPoolSocket")
00047 }
00048
00049 CSocketPoolSocket::~CSocketPoolSocket()
00050 {
00051 }
00052
00053 void CSocketPoolSocket::SetConnectionData(const std::string& rAddress,
00054 unsigned short usPort)
00055 {
00056
00057 m_sAddress=rAddress;
00058 m_usPort=usPort;
00059 }
00060
00061 BOOL CSocketPoolSocket::Connect()
00062 {
00063 try
00064 {
00065
00066 if (!Create())
00067 {
00068
00069 ReportError("Connect","Failed to create socket!");
00070
00071
00072 return FALSE;
00073 }
00074
00075 if (!m_usPort ||
00076 m_sAddress.empty())
00077 {
00078
00079 ReportError("Connect","No connection data!");
00080
00081
00082 return FALSE;
00083 }
00084
00085
00086 return CTCPSocketAsync::Connect(0,
00087 m_sAddress.c_str(),
00088 m_usPort);
00089 }
00090 ERROR_HANDLER_RETURN("Connect",FALSE)
00091 }
00092
00093 BOOL CSocketPoolSocket::OnSocketConnect(int iErrorCode)
00094 {
00095 try
00096 {
00097
00098 if (!iErrorCode)
00099
00100 m_pFather->SocketConnected(this);
00101 else
00102
00103 m_pFather->SocketClosed(this);
00104
00105
00106 return TRUE;
00107 }
00108 ERROR_HANDLER_RETURN("OnSocketConnect",TRUE)
00109 }
00110
00111 CSocketPoolSocket::PoolSocketID CSocketPoolSocket::GetID()const
00112 {
00113 return 0;
00114 }
00115
00116 BOOL CSocketPoolSocket::OnSocketClose(int iErrorCode)
00117 {
00118 try
00119 {
00120
00121 m_pFather->SocketClosed(this);
00122
00123
00124 return TRUE;
00125 }
00126 ERROR_HANDLER_RETURN("OnSocketClose",TRUE)
00127 }
00128
00129 void CSocketPoolSocket::ClosePoolSocket()
00130 {
00131 try
00132 {
00133
00134 Close();
00135
00136
00137 m_pFather->SocketClosed(this);
00138 }
00139 ERROR_HANDLER("ClosePoolSocket")
00140 }
00141
00142 KOMODIA_NAMESPACE_END