//Call back when the socket has connected public static void acceptCallBack(IAsyncResult ar) { ProxyConnection conn = null; try { ProxyClientListenerTask listener = (ProxyClientListenerTask) ar.AsyncState; //create a new task for connecting to the server side. conn = m_mgr.getConnection(); conn.serviceName = listener.m_config.serviceName; conn.clientSocket = listener.listenSocket.EndAccept(ar); //accept the client connection logger.info("[{0}] Conn#{1} Accepted new connection. Local: {2}, Remote: {3}.", conn.serviceName, conn.connNumber, conn.clientSocket.LocalEndPoint.ToString(), conn.clientSocket.RemoteEndPoint.ToString() ); conn.serverEP = listener.m_config.serverEP; //Start listening for connection on this port again listener.listenSocket.BeginAccept( new AsyncCallback(ProxyClientListenerTask.acceptCallBack), listener); ProxyServerConnectTask serverTask = new ProxyServerConnectTask(conn); //now try to connect to the server ThreadPool.getInstance().addTask(serverTask); } catch (SocketException se) { logger.error("[{0}] Conn# {1} Socket Error occurred when accepting client socket. Error Code is: {2}", conn.serviceName, conn.connNumber, se.ErrorCode); if (conn != null) { conn.Release(); } } catch (Exception e) { logger.error("[{0}] Conn# {1} Error occurred when accepting client socket. Error is: {2}", conn.serviceName, conn.connNumber, e); if (conn != null) { conn.Release(); } } finally { conn = null; //free reference to the object } }
//Call back when the socket has connected public static void acceptCallBack(IAsyncResult ar) { ProxyConnection conn = null; try { ProxyClientListenerTask listener = (ProxyClientListenerTask)ar.AsyncState; //create a new task for connecting to the server side. conn = m_mgr.getConnection(); conn.serviceName = listener.m_config.serviceName; conn.clientSocket = listener.listenSocket.EndAccept(ar); //accept the client connection logger.info("[{0}] Conn#{1} Accepted new connection. Local: {2}, Remote: {3}.", conn.serviceName, conn.connNumber, conn.clientSocket.LocalEndPoint.ToString(), conn.clientSocket.RemoteEndPoint.ToString()); conn.serverEP = listener.m_config.serverEP; //Start listening for connection on this port again listener.listenSocket.BeginAccept(new AsyncCallback(ProxyClientListenerTask.acceptCallBack), listener); ProxyServerConnectTask serverTask = new ProxyServerConnectTask(conn); //now try to connect to the server ThreadPool.getInstance().addTask(serverTask); } catch (SocketException se) { logger.error("[{0}] Conn# {1} Socket Error occurred when accepting client socket. Error Code is: {2}", conn.serviceName, conn.connNumber, se.ErrorCode); if (conn != null) { conn.Release(); } } catch (Exception e) { logger.error("[{0}] Conn# {1} Error occurred when accepting client socket. Error is: {2}", conn.serviceName, conn.connNumber, e); if (conn != null) { conn.Release(); } } finally { conn = null; //free reference to the object } }