package org.handwerkszeug.riak.transport.internal;
import org.handwerkszeug.riak.Markers;
import org.handwerkszeug.riak.nls.Messages;
import org.handwerkszeug.riak.op.RiakResponseHandler;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.MessageEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author taichi
*/
public class DefaultCompletionChannelHandler<T> extends
AbstractCompletionChannelHandler<T> {
static final Logger LOG = LoggerFactory
.getLogger(DefaultCompletionChannelHandler.class);
final MessageHandler handler;
public DefaultCompletionChannelHandler(CompletionSupport support,
String name, RiakResponseHandler<T> users, MessageHandler handler,
CountDownRiakFuture future) {
super(support, name, users, future);
this.handler = handler;
}
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
throws Exception {
try {
Object receive = e.getMessage();
if (LOG.isDebugEnabled()) {
LOG.debug(Markers.DETAIL, Messages.Receive, this.name, receive);
}
if (this.handler.handle(receive, this.future)) {
this.support.invokeNext();
}
} finally {
this.support.responseComplete();
}
}
}