package edu.uw.zookeeper.netty;
import io.netty.channel.Channel;
import java.util.Collection;
import java.util.Collections;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import edu.uw.zookeeper.net.Connection;
public class ChannelConnection<I,O>
extends AbstractChannelConnection<I,O,ChannelConnection<I,O>> {
public static <I,O> ChannelConnection<I,O> defaults(
Class<? extends O> type,
Channel channel) {
Collection<Connection.Listener<? super O>> listeners = Collections.emptySet();
return withListeners(type, channel, listeners);
}
public static <I,O> ChannelConnection<I,O> withListeners(
Class<? extends O> type,
Channel channel,
Collection<? extends Connection.Listener<? super O>> listeners) {
Logger logger = LogManager.getLogger(ChannelConnection.class);
EventfulHandler<O> eventful = EventfulHandler.withLogger(type, logger);
ConnectionStateHandler state = ConnectionStateHandler.withLogger(logger);
return newInstance(channel, eventful, state, listeners, logger);
}
public static <I,O> ChannelConnection<I,O> newInstance(
Channel channel,
EventfulHandler<? extends O> eventful,
ConnectionStateHandler state,
Collection<? extends Connection.Listener<? super O>> listeners,
Logger logger) {
return new ChannelConnection<I,O>(channel, eventful, state, listeners, logger);
}
protected ChannelConnection(
Channel channel,
EventfulHandler<? extends O> eventful,
ConnectionStateHandler state,
Collection<? extends Connection.Listener<? super O>> listeners,
Logger logger) {
super(channel, eventful, state, listeners, logger);
}
@Override
protected ChannelConnection<I,O> self() {
return this;
}
}