package edu.uw.zookeeper.protocol.server; import edu.uw.zookeeper.common.Automaton; import edu.uw.zookeeper.net.CodecConnection; import edu.uw.zookeeper.protocol.Message; import edu.uw.zookeeper.protocol.ProtocolCodec; import edu.uw.zookeeper.protocol.ProtocolConnection; import edu.uw.zookeeper.protocol.ProtocolState; public class ServerProtocolConnection<V extends ProtocolCodec<?,?,?,?>,T extends CodecConnection<? super Message.Server, ? extends Message.Client, V, ?>> extends ProtocolConnection<Message.Server,Message.Client,V,T,ServerProtocolConnection<V,T>> { public static <V extends ProtocolCodec<?,?,?,?>,T extends CodecConnection<? super Message.Server, ? extends Message.Client, V, ?>> ServerProtocolConnection<V,T> newInstance( T connection) { return new ServerProtocolConnection<V,T>(connection); } public ServerProtocolConnection(T connection) { super(connection); } @Override public void handleAutomatonTransition(Automaton.Transition<ProtocolState> transition) { if (transition.to() == ProtocolState.CONNECTED) { // we now need to trigger a flush of any accumulated read buffer connection.read(); } super.handleAutomatonTransition(transition); } }