Bloxy.BloxyServer._HandleMessages C# (CSharp) Method

_HandleMessages() private method

private _HandleMessages ( object client ) : void
client object
return void
        private void _HandleMessages(object client)
        {
            try
              {
            var c = client as TcpClient;
            var stream = c.GetStream();

            while (true)
            {
              //Get message prefixed with 4-byte length field
              var length = new byte[4];
              int bytesRead = stream.Read(length, 0, 4);
              if (bytesRead <= 0)
            break; //Fall over and die if we get something weird
              ulong l = (ulong)((ulong)length[0] | (ulong)((ulong)(length[1] << 8) & 0xFF00) |
            (ulong)((ulong)(length[2] << 16) & 0xFF0000) | (ulong)((length[3] << 24) & 0xFF000000));
              var buffer = new byte[l];
              stream.Read(buffer, 0, (int)l);

              //Handle message
              switch (buffer[0])
              {
            case (byte)'I':
              {
                //Incoming ACL data from the other PC/device received
                Logger.WriteLine("Network: Received ACL data: " + BitConverter.ToString(buffer, 1, buffer.Length - 1));

                //Change the connection handle to our adapter's
                buffer[1] = (byte)(_currentConnectionHandle & 0xFF);
                byte temp = (byte)(buffer[2] & 0xF0);
                buffer[2] = (byte)((byte)((_currentConnectionHandle >> 8) & 0xFF) | (byte)temp);

                //Send it on
                Logger.WriteLine("Sending ACL data: " + BitConverter.ToString(buffer, 1, buffer.Length - 1));
                Properties.Adapter.SendACLData(buffer, 1, buffer.Length - 1);

                break;
              }
            case (byte)'C':
              {
                //The other PC/device completed connecting
                ushort connectionHandle = (ushort)(buffer[4] | (buffer[5] << 8));
                ulong bdAddr = Utilities.GetLEULong(buffer, 6, 6);

                //We only care if the device we're emulating has completed connecting
                if (bdAddr == Properties.EmulatedConfiguration.BDAddr)
                {
                  Logger.WriteLine("Network: Received connection complete");

                  //Accept this connection request
                  Properties.Adapter.AcceptConnectionRequest(Properties.RealConfiguration.BDAddr, 0x01);
                }

                break;
              }
            case (byte)'R':
              {
                //The other PC/device received a connection request
                Logger.WriteLine("Network: Received connection request");

                //We must now establish the connection on our end
                Properties.Adapter.Connect(Properties.RealConfiguration.BDAddr,
                  Properties.RealConfiguration.PageScanRepetitionMode, Properties.RealConfiguration.ClockOffset);

                break;
              }
            default:
              {
                Logger.WriteLine("Network: Unknown command received: " + ((char)buffer[0]).ToString());
                break;
              }
              }

              Thread.Sleep(100);
            }
              }
              catch
              {
            //Whatever...
              }
        }