void route_Disconnected(TcpRoute route) { if (route == null) return; lock (_connections) { route.Disconnected -= route_Disconnected; _connections.Remove(route); } }
private void FirstPacketReadCallback(IAsyncResult asyncResult) { if (asyncResult == null) { return; } TcpStateContainer asyncState = asyncResult.AsyncState as TcpStateContainer; if (asyncState == null) { return; } TcpHost clientMachine = asyncState.Client; byte[] data = asyncState.DataBuffer; try { int numBytes = clientMachine.Stream.EndRead(asyncResult); string stringData = Encoding.UTF8.GetString(data, 0, numBytes); HttpPacket packet = HttpPacketBuilder.BuildPacket(stringData); if (packet == null) { clientMachine.Close(); return; } Host serverMachineHost = packet.IsWebSocketPacket ? _configuration.WebSocketHost : _configuration.HttpHost; if (serverMachineHost != null && serverMachineHost.IsSpecified) { TcpHost serverMachine = TcpHost.ManufactureDefault(serverMachineHost.IpAddress, serverMachineHost.Port); serverMachine.Send(data, numBytes); TcpRoute route = new TcpRoute(clientMachine, serverMachine); _tcpConnectionManager.AddRoute(route); } else { clientMachine.Close(); } } catch (IOException) { } }
public void AddRoute(TcpRoute route) { if (route == null || !route.Connected) return; lock (_connections) { route.Disconnected += route_Disconnected; _connections.Add(route); route.Start(); } }
void route_Disconnected(TcpRoute route) { if (route == null) { return; } lock (_connections) { route.Disconnected -= route_Disconnected; _connections.Remove(route); } }
public void AddRoute(TcpRoute route) { if (route == null || !route.Connected) { return; } lock (_connections) { route.Disconnected += route_Disconnected; _connections.Add(route); route.Start(); } }
private void FirstPacketReadCallback(IAsyncResult asyncResult) { if (asyncResult == null) return; TcpStateContainer asyncState = asyncResult.AsyncState as TcpStateContainer; if (asyncState == null) return; TcpHost clientMachine = asyncState.Client; byte[] data = asyncState.DataBuffer; try { int numBytes = clientMachine.Stream.EndRead(asyncResult); string stringData = Encoding.UTF8.GetString(data, 0, numBytes); HttpPacket packet = HttpPacketBuilder.BuildPacket(stringData); if (packet == null) { clientMachine.Close(); return; } Host serverMachineHost = packet.IsWebSocketPacket ? _configuration.WebSocketHost : _configuration.HttpHost; if (serverMachineHost != null && serverMachineHost.IsSpecified) { TcpHost serverMachine = TcpHost.ManufactureDefault(serverMachineHost.IpAddress, serverMachineHost.Port); serverMachine.Send(data, numBytes); TcpRoute route = new TcpRoute(clientMachine, serverMachine); _tcpConnectionManager.AddRoute(route); } else { clientMachine.Close(); } } catch (IOException) { } }