コード例 #1
0
ファイル: RoNetBuffer.cs プロジェクト: koodpzok/Mjolnir
        public Protocol.Header GetPacketHeader()
        {
            if (Length < 2)
            {
                throw new Exception("GetPacketHeader when insuficient data avaliable");
            }

            Protocol.Header header = Protocol.Header.ParseFrom(_data);
            Position += header.HeaderSize;

            return(header);
        }
コード例 #2
0
ファイル: RoNetBuffer.cs プロジェクト: koodpzok/Mjolnir
        public bool PacketAvaliable()
        {
            if (Length < 2)
            {
                return(false);
            }

            Protocol.Header header = Protocol.Header.ParseFrom(_data);
            if (Length < header.HeaderSize + header.Size)
            {
                return(false);
            }

            return(true);
        }
コード例 #3
0
ファイル: Header.cs プロジェクト: scriptord3/Mjolnir
        public static Header ParseFrom(byte[] data)
        {
            Header header = new Header();
            header.MethodId = (uint)((data[1] << 8) | data[0]);
            header.HeaderSize += 2;

            header.Size = Protocol.PacketLengthMgr.GetPacketLengthForMethodId(header.MethodId);
            if (header.Size == -1)
            {
                header.Size = ((data[3] << 8) | data[2]);
                // workaroung
                if (header.MethodId == 2222)
                    header.Size = ((data[5] << 8) | data[4]);
                header.HeaderSize += 2;
            }

            header.Size -= header.HeaderSize;
            return header;
        }