SimTelemetry.Data.Net.TelemetryClient.AcceptPackets C# (CSharp) Method

AcceptPackets() public method

public AcceptPackets ( ) : void
return void
        public void AcceptPackets()
        {
            List<byte> RxBuffer = new List<byte>();
            while(_mClient.Connected)
            {

                try
                {
                    // TODO: This is really really messy.
                    byte[] rxbuf = new byte[256*1024];
                    int available = _mStream.Read(rxbuf, 0, 256 * 1024);
                    byte[] rxbuf2 = new byte[available];
                    Array.Copy(rxbuf, rxbuf2, available);
                    RxBuffer.AddRange(rxbuf2);

                    while (RxBuffer.Count >= 6)
                    {
                        if (RxBuffer.Count > 2*1024*1024) // Cap buffer at 2MiB
                            RxBuffer.RemoveRange(0, RxBuffer.Count - 2*1024*1024); // remove x bytes so 2 MiB remains.

                        try
                        {
                            if (RxBuffer[0] == (byte) '$' && RxBuffer[1] == (byte) '#') /// 0x24 + 0x23
                            {
                                int size = BitConverter.ToInt32(RxBuffer.ToArray(), 2);
                                if (RxBuffer.Count > size)
                                {
                                    RxBuffer.RemoveRange(0, 6);

                                    NetworkPacket pack =
                                        (NetworkPacket) ByteMethods.DeserializeFromBytes(RxBuffer.ToArray());
                                    if (Packet != null)
                                        Packet(pack);

                                    RxBuffer.RemoveRange(0, size);
                                }
                                else
                                    break;
                            }
                        }
                        catch (Exception ex)
                        {

                        }
                        int next = RxBuffer.IndexOf((byte) '$');
                        if (next >= 2)
                            RxBuffer.RemoveRange(0, next - 1);
                    }

                }
                catch (Exception ex)
                {

                }
                Thread.Sleep(5);
            }
        }