Ejemplo n.º 1
0
 protected void SendPacket(Packet packet)
 {
     using (MemoryStream stream = new MemoryStream())
     {
         OutputBuffer outgoing = new OutputBuffer(stream);
         outgoing.WriteVarInt(GetOutgoingID(packet));
         packet.Write(outgoing);
         if (compression_treshold > 0)
         {
             var content = stream.ToArray();
             outgoing = new OutputBuffer();
             if (content.Length >= compression_treshold)
             {
                 byte[] compressed_packet = ZlibUtils.Compress(content, (MemoryStream)outgoing.GetStream());
                 outgoing.WriteVarInt(compressed_packet.Length);
                 outgoing.WriteData(compressed_packet);
             }
             else
             {
                 outgoing.WriteVarInt(0);
                 outgoing.WriteData(content);
             }
         }
         writer.WriteVarInt((int)outgoing.GetStream().Length);
         writer.WriteData(outgoing.ToArray());
         outgoing.Dispose();
     }
 }
Ejemplo n.º 2
0
        protected Packet ReadPacket()
        {
            int    size   = reader.ReadVarInt();
            Packet packet = null;

            using (MemoryStream stream = new MemoryStream(reader.ReadData(size), false))
            {
                InputBuffer input = new InputBuffer(stream);
                if (ProtocolVersion >= 47 && compression_treshold > 0)
                {
                    int sizeUncompressed = input.ReadVarInt();
                    if (sizeUncompressed != 0)
                    {
                        input = new InputBuffer(ZlibUtils.Decompress(stream, sizeUncompressed));
                    }
                }
                int packetID = input.ReadVarInt();
                packet = CreateIncomingPacket(packetID);
                if (packet != null)
                {
                    packet.Read(input);
                }
                input.Dispose();
            }
            return(packet);
        }