package redis.netty4;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener;
import spullara.util.concurrent.Promise;
/**
* Adapts a ChannelFutureListener to a Promise.
*/
public class ChannelFutureListenerPromiseAdapter<T> implements ChannelFutureListener {
private final Promise<T> promise;
private final T client;
public ChannelFutureListenerPromiseAdapter(Promise<T> promise, T client) {
this.promise = promise;
this.client = client;
}
@Override
public void operationComplete(ChannelFuture channelFuture) throws Exception {
if (channelFuture.isSuccess()) {
promise.set(client);
} else {
promise.setException(channelFuture.cause());
}
}
}