/// <summary> /// Reads the length from the packet header. (If a length is required for the specific packet type.) /// </summary> /// <param name="headerType">Type of the header.</param> /// <returns></returns> public ushort ReadLength(PacketHeaderType headerType) { // So we can go back to where we were. long curPos = BaseStream.Position; ushort ret; switch (headerType) { case PacketHeaderType.AuthCmsg: // No length in this header. return(0); case PacketHeaderType.AuthSmsg: BaseStream.Seek(1, SeekOrigin.Begin); ret = ReadUInt16(); break; case PacketHeaderType.WorldSmsg: case PacketHeaderType.WorldCmsg: //First 2 bytes in packet ret = ReadUInt16(); break; default: throw new ArgumentOutOfRangeException("headerType"); } // Go back to wherever we were in the stream and return our value BaseStream.Seek(curPos, SeekOrigin.Begin); return(ret); }
/// <summary> /// Reads the op code from the packet header. /// </summary> /// <param name="headerType">Type of the header.</param> /// <returns></returns> public ushort ReadOpCode(PacketHeaderType headerType) { // So we can go back to where we were. long curPos = BaseStream.Position; // Go to the beginning, as our opcodes start from there. base.BaseStream.Seek(0, SeekOrigin.Begin); ushort ret; switch (headerType) { case PacketHeaderType.AuthCmsg: case PacketHeaderType.AuthSmsg: ret = ReadByte(); break; case PacketHeaderType.WorldSmsg: case PacketHeaderType.WorldCmsg: BaseStream.Seek(2, SeekOrigin.Begin); ret = ReadUInt16(); break; default: throw new ArgumentOutOfRangeException("headerType"); } // Go back to wherever we were in the stream and return our value BaseStream.Seek(curPos, SeekOrigin.Begin); return(ret); }
public Packet(PacketHeaderType header, ushort opCode) { HeaderType = header; Writer = new PacketWriter(header); // Keep in mind; depending on the type of packet header passed, // this will write either a byte, or a ushort. Writer.WritePacketHeader(opCode); }
/// <summary> /// Skips the packet header. /// </summary> /// <param name="headerType">Type of the header.</param> public void SkipPacketHeader(PacketHeaderType headerType) { // Since the enum corresponds to the packet header length already, // we just skip it via the value. BaseStream.Seek((byte)headerType, SeekOrigin.Begin); }
public Message(PacketHeaderType headerByte) : base(headerByte) { Timeout = XpressNetConstants.RESPONSE_TIMEOUT; }
public Message(PacketHeaderType header, IEnumerable <byte> payload) : base(header, payload) { Timeout = XpressNetConstants.RESPONSE_TIMEOUT; }
internal PacketWriter(PacketHeaderType headerType, Stream output) : base(output, Encoding.UTF8) { _headerType = headerType; }
public PacketWriter(PacketHeaderType headerType) : this(headerType, new MemoryStream()) { }
} //we need to add the packet length to the lower nibble of the header before sending public Packet(PacketHeaderType header, IEnumerable <byte> payload) : this() { Header = header; Payload = new List <byte>(payload); }
protected byte HeaderByte { get { return (byte)((Convert.ToByte(Header) << 4) | PayloadLength); } } //we need to add the packet length to the lower nibble of the header before sending public Packet(PacketHeaderType header, IEnumerable<byte> payload) : this() { Header = header; Payload = new List<byte>(payload); }
//private PacketHeaderType header; public PacketWriter(short opcode, PacketHeaderType headerType) : this(headerType, new MemoryStream()) { Opcode = opcode; }
/// <summary> /// Reads the op code from the packet header. /// </summary> /// <param name="headerType">Type of the header.</param> /// <returns></returns> public ushort ReadOpCode(PacketHeaderType headerType) { // So we can go back to where we were. long curPos = BaseStream.Position; // Go to the beginning, as our opcodes start from there. base.BaseStream.Seek(0, SeekOrigin.Begin); ushort ret; switch (headerType) { case PacketHeaderType.AuthCmsg: case PacketHeaderType.AuthSmsg: ret = ReadByte(); break; case PacketHeaderType.WorldSmsg: case PacketHeaderType.WorldCmsg: BaseStream.Seek(2, SeekOrigin.Begin); ret = ReadUInt16(); break; default: throw new ArgumentOutOfRangeException("headerType"); } // Go back to wherever we were in the stream and return our value BaseStream.Seek(curPos, SeekOrigin.Begin); return ret; }
/// <summary> /// Reads the length from the packet header. (If a length is required for the specific packet type.) /// </summary> /// <param name="headerType">Type of the header.</param> /// <returns></returns> public ushort ReadLength(PacketHeaderType headerType) { // So we can go back to where we were. long curPos = BaseStream.Position; ushort ret; switch (headerType) { case PacketHeaderType.AuthCmsg: // No length in this header. return 0; case PacketHeaderType.AuthSmsg: BaseStream.Seek(1, SeekOrigin.Begin); ret = ReadUInt16(); break; case PacketHeaderType.WorldSmsg: case PacketHeaderType.WorldCmsg: //First 2 bytes in packet ret = ReadUInt16(); break; default: throw new ArgumentOutOfRangeException("headerType"); } // Go back to wherever we were in the stream and return our value BaseStream.Seek(curPos, SeekOrigin.Begin); return ret; }
protected PacketWriter(PacketHeaderType headerType, Stream output) : base(output, Encoding.UTF8) { _headerType = headerType; }
public Packet(PacketHeaderType headerByte) : this() { Header = headerByte; Payload = new List<byte>(); }
internal PacketWriter(PacketHeaderType headerType) : this(headerType, new MemoryStream()) { }
public Packet(PacketHeaderType headerByte) : this() { Header = headerByte; Payload = new List <byte>(); }