protected override byte[] BuildPacket(Packet packet) { var packetSize = packet.GetSize(); // Calculate header size var headerSize = 3; int n = packetSize; do { headerSize++; n >>= 7; } while (n != 0); // Write header var result = new byte[headerSize + packetSize]; result[0] = 0x55; result[1] = 0x12; result[2] = 0x00; // Length var ptr = 3; n = packetSize; do { result[ptr++] = (byte)(n > 0x7F ? (0x80 | (n & 0xFF)) : n & 0xFF); n >>= 7; } while (n != 0); // Write packet packet.Build(ref result, ptr); return result; }
protected override byte[] BuildPacket(Packet packet) { var result = new byte[6 + packet.GetSize() + 4]; // header + packet + checksum result[0] = 0x88; System.Buffer.BlockCopy(BitConverter.GetBytes(result.Length), 0, result, 1, sizeof(int)); packet.Build(ref result, 6); return result; }
/// <summary>Writes packet as bin and the length of it as int to buffer.</summary> public Packet PutBin(Packet packet) { var val = packet.Build(false); return this.PutInt(val.Length).PutBin(val); }
/// <summary> /// Builds buffer from packet and sends it. /// </summary> /// <param name="packet"></param> public virtual void Send(Packet packet) { // Don't log internal packets //if (packet.Op < Op.Internal.ServerIdentify) // Log.Debug("S: " + packet); this.Send(packet.Build()); }