package openmods.network.senders; import io.netty.channel.Channel; import java.util.Collection; import openmods.utils.NetUtils; public class TargetedPacketSenderBase<T> implements ITargetedPacketSender<T> { private final Channel channel; public TargetedPacketSenderBase(Channel channel) { this.channel = channel; } protected void configureChannel(Channel channel, T target) {} protected void cleanupChannel(Channel channel) {} @Override public void sendMessage(Object msg, T target) { configureChannel(channel, target); channel.writeAndFlush(msg).addListener(NetUtils.LOGGING_LISTENER); cleanupChannel(channel); } @Override public void sendMessages(Collection<Object> msgs, T target) { configureChannel(channel, target); for (Object msg : msgs) channel.write(msg).addListener(NetUtils.LOGGING_LISTENER); channel.flush(); cleanupChannel(channel); } @Override public IPacketSender bind(final T target) { return new IPacketSender() { @Override public void sendMessage(Object msg) { TargetedPacketSenderBase.this.sendMessage(msg, target); } @Override public void sendMessages(Collection<Object> msg) { TargetedPacketSenderBase.this.sendMessages(msg, target); } }; } }