package org.handwerkszeug.riak.transport.rest.internal;
import org.handwerkszeug.riak.op.RiakResponseHandler;
import org.handwerkszeug.riak.transport.internal.CompletionSupport;
import org.handwerkszeug.riak.transport.internal.CountDownRiakFuture;
import org.handwerkszeug.riak.transport.internal.MessageHandler;
import org.handwerkszeug.riak.util.NettyUtil;
import org.jboss.netty.handler.codec.http.HttpResponse;
/**
* @author taichi
*/
public class ContinuousMessageHandler<T> implements MessageHandler {
final CompletionSupport support;
final RiakResponseHandler<T> users;
final MessageHandler internal;
public ContinuousMessageHandler(RiakResponseHandler<T> users,
MessageHandler internal, CompletionSupport support) {
this.users = users;
this.internal = internal;
this.support = support;
}
@Override
public boolean handle(Object receive, CountDownRiakFuture future)
throws Exception {
if (receive instanceof HttpResponse) {
HttpResponse response = (HttpResponse) receive;
if (NettyUtil.isError(response.getStatus())) {
this.users
.onError(new RestErrorResponse(response));
future.setFailure();
return true;
}
}
return this.internal.handle(receive, future);
}
}