//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
			}
		}
示例#2
0
        //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
            }
        }