Beispiel #1
0
        private void ProcessConnection(IConnection connection)
        {
            bool flag = false;

            try
            {
                byte[] numArray = new byte[4];
                if (connection.Read(numArray, 0, 4, TimeSpan.FromSeconds(1)) == 4)
                {
                    int num = BitConverter.ToInt32(numArray, 0);
                    if (num <= 100)
                    {
                        byte[] numArray1 = new byte[num];
                        if (connection.Read(numArray1, 0, num, TimeSpan.FromSeconds(1)) == num)
                        {
                            string str = Encoding.UTF8.GetString(numArray1);
                            DemuxSocketListener demuxSocketListener = null;
                            lock (this.listenerTable)
                            {
                                if (!this.listenerTable.TryGetValue(str, out demuxSocketListener))
                                {
                                    return;
                                }
                            }
                            demuxSocketListener.EnqueueConnection(connection, new Action(this.OnConnectionDequeued));
                            flag = true;
                        }
                    }
                }
            }
            finally
            {
                if (!flag)
                {
                    connection.Close(TimeSpan.FromSeconds(1));
                }
            }
        }