package net.minecraft.network;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import java.util.zip.Deflater;
public class NettyCompressionEncoder extends MessageToByteEncoder
{
private final byte[] buffer = new byte[8192];
private final Deflater deflater;
private int treshold;
private static final String __OBFID = "CL_00002313";
public NettyCompressionEncoder(int treshold)
{
this.treshold = treshold;
this.deflater = new Deflater();
}
protected void compress(ChannelHandlerContext ctx, ByteBuf input, ByteBuf output)
{
int var4 = input.readableBytes();
PacketBuffer var5 = new PacketBuffer(output);
if (var4 < this.treshold)
{
var5.writeVarIntToBuffer(0);
var5.writeBytes(input);
}
else
{
byte[] var6 = new byte[var4];
input.readBytes(var6);
var5.writeVarIntToBuffer(var6.length);
this.deflater.setInput(var6, 0, var4);
this.deflater.finish();
while (!this.deflater.finished())
{
int var7 = this.deflater.deflate(this.buffer);
var5.writeBytes(this.buffer, 0, var7);
}
this.deflater.reset();
}
}
public void setCompressionTreshold(int treshold)
{
this.treshold = treshold;
}
protected void encode(ChannelHandlerContext p_encode_1_, Object p_encode_2_, ByteBuf p_encode_3_)
{
this.compress(p_encode_1_, (ByteBuf)p_encode_2_, p_encode_3_);
}
}