blob: 93347c0184cbdca1cdbfa50a99b52e49a49fbe7d [file] [log] [blame] [raw]
package protocolsupport.protocol.pipeline.version;
import java.util.List;
import protocolsupport.api.unsafe.Connection;
import protocolsupport.protocol.packet.middle.ServerBoundMiddlePacket;
import protocolsupport.protocol.packet.middleimpl.PacketCreator;
import protocolsupport.protocol.pipeline.IPacketDecoder;
import protocolsupport.protocol.storage.SharedStorage;
import protocolsupport.protocol.utils.registry.MiddleTransformerRegistry;
import protocolsupport.protocol.utils.registry.MiddleTransformerRegistry.InitCallBack;
import protocolsupport.utils.recyclable.RecyclableCollection;
public abstract class AbstractPacketDecoder implements IPacketDecoder {
protected final MiddleTransformerRegistry<ServerBoundMiddlePacket> registry = new MiddleTransformerRegistry<>();
protected final Connection connection;
protected final SharedStorage sharedstorage;
public AbstractPacketDecoder(Connection connection, SharedStorage sharedstorage) {
this.connection = connection;
this.sharedstorage = sharedstorage;
registry.setCallBack(new InitCallBack<ServerBoundMiddlePacket>() {
@Override
public void onInit(ServerBoundMiddlePacket object) {
object.setConnection(AbstractPacketDecoder.this.connection);
object.setSharedStorage(AbstractPacketDecoder.this.sharedstorage);
}
});
}
protected void addPackets(RecyclableCollection<PacketCreator> packets, List<Object> to) throws Exception {
try {
for (PacketCreator creator : packets) {
to.add(creator.create());
}
} finally {
packets.recycle();
}
}
}