예제 #1
0
        private IPacket ReadPacket(IPacketFormatter formatter)
        {
            try {
                ushort len = ReadUInt16();

                if (Remaining < len + 1)
                {
                    throw new EndOfStreamException();
                }

                byte   id      = ReadByte();
                byte[] payload = ReadBytes(len);

                return(formatter?.Unformat(id, payload));
            }
            catch { return(null); }
        }
예제 #2
0
        private IPacket ReadPacket(IPacketFormatter formatter, bool len_prefix = true)
        {
            try {
                int len = -1;

                if (len_prefix)
                {
                    len = ReadUInt16();
                }
                if (Remaining < len + 1)
                {
                    throw new EndOfStreamException();
                }

                byte   id      = ReadByte();
                byte[] payload = ReadBytes((len == -1) ? (int)Remaining : len);

                return(formatter?.Unformat(id, payload));
            }
            catch { return(null); }
        }