void route_Disconnected(TcpRoute route)
        {
            if (route == null) return;

            lock (_connections)
            {
                route.Disconnected -= route_Disconnected;
                _connections.Remove(route);
            }
        }
Пример #2
0
        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();
            }
        }
Пример #6
0
        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)
            {

            }
        }