Example #1
0
        public void OnNetworkReceive(long peerId, byte[] data)
        {
            var readBuffer = data;
            var offset     = 0;

            readBuffer = ApplyRemainedBuffer(readBuffer);
            var bufferLength = readBuffer.Length;

            do
            {
                var headerStream = new CodedInputStream(readBuffer, offset, NetUtil.HeaderSize);
                var header       = headerStream.ReadSFixed32();
                NetUtil.DeserializeHeader(header, out ushort size, out ushort code);

                if (readBuffer.Length < NetUtil.HeaderSize + size)
                {
                    //Log.Warn(this,
                    //    $"Received buffer is smaller than header size. buffer_length: {readBuffer.Length}, sizeInHeader: {size}, offset: {offset}, code: {code}");
                    break;
                }
                offset += NetUtil.HeaderSize;

                var bodyStream = new CodedInputStream(readBuffer, offset, size);
                OnReceived?.Invoke(peerId, code, bodyStream);
                offset += size;
            } while (offset + NetUtil.HeaderSize < bufferLength);

            if (offset < readBuffer.Length)
            {
                SaveRemainedBuffer(readBuffer, offset, readBuffer.Length - offset);
            }
        }
Example #2
0
        public void OnNetworkReceive(NetConnection conn, byte[] data)
        {
            var readBuffer   = data;
            var bufferLength = readBuffer.Length;
            var offset       = 0;

            do
            {
                var headerStream = new CodedInputStream(readBuffer, offset, NetUtil.HeaderSize);
                var header       = headerStream.ReadSFixed32();
                NetUtil.DeserializeHeader(header, out ushort size, out ushort code);
                offset += NetUtil.HeaderSize;
                var bodyStream = new CodedInputStream(readBuffer, offset, size);
                OnReceived?.Invoke(conn.RemoteUniqueIdentifier, code, bodyStream);
                offset += size;
            } while (offset + NetUtil.HeaderSize < bufferLength);
        }