private void AcceptCallback(IAsyncResult ar) { var newSocket = Listener.EndAccept(ar); var node = NodeBuilder.FromEndpoint((IPEndPoint)newSocket.RemoteEndPoint); var receiveState = CreateNetworkState(newSocket, node); var responseChannel = new TcpReactorResponseChannel(this, newSocket, EventLoop.Clone(ProxiesShareFiber)); SocketMap.Add(node, responseChannel); NodeConnected(node, responseChannel); newSocket.BeginReceive(receiveState.RawBuffer, 0, receiveState.RawBuffer.Length, SocketFlags.None, ReceiveCallback, receiveState); Listener.BeginAccept(AcceptCallback, null); //accept more connections }
private void AcceptCallback(IAsyncResult ar) { try { var newSocket = Listener.EndAccept(ar); var node = NodeBuilder.FromEndpoint((IPEndPoint)newSocket.RemoteEndPoint); HeliosTrace.Instance.TcpInboundAcceptSuccess(); var receiveState = CreateNetworkState(newSocket, node); var responseChannel = new TcpReactorResponseChannel(this, newSocket, EventLoop.Clone(ProxiesShareFiber)); SocketMap.TryAdd(node, responseChannel); NodeConnected(node, responseChannel); newSocket.BeginReceive(receiveState.RawBuffer, 0, receiveState.RawBuffer.Length, SocketFlags.None, ReceiveCallback, receiveState); Listener.BeginAccept(AcceptCallback, null); //accept more connections } catch (Exception ex) { HeliosTrace.Instance.TcpInboundAcceptFailure(ex.Message); } }