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); }
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); }
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; }