package edu.uw.zookeeper.net;
import edu.uw.zookeeper.common.Automaton;
import edu.uw.zookeeper.common.ForwardingPromise;
import edu.uw.zookeeper.common.Promise;
import edu.uw.zookeeper.common.SettableFuturePromise;
import edu.uw.zookeeper.net.Connection;
public class GetConnectionState extends ForwardingPromise<Automaton.Transition<Connection.State>> implements Connection.Listener<Object> {
public static GetConnectionState create(Connection<?,?,?> connection) {
return new GetConnectionState(connection, SettableFuturePromise.<Automaton.Transition<Connection.State>>create());
}
protected final Promise<Automaton.Transition<Connection.State>> promise;
protected final Connection<?,?,?> connection;
public GetConnectionState(
Connection<?,?,?> connection,
Promise<Automaton.Transition<Connection.State>> promise) {
this.promise = promise;
this.connection = connection;
this.connection.subscribe(this);
}
@Override
protected Promise<Automaton.Transition<Connection.State>> delegate() {
return promise;
}
@Override
public void handleConnectionState(Automaton.Transition<Connection.State> state) {
connection.unsubscribe(this);
set(state);
}
@Override
public void handleConnectionRead(Object message) {
}
}