package com.linkedin.r2.transport.common; import com.linkedin.common.callback.Callback; import com.linkedin.r2.message.RequestContext; import com.linkedin.r2.message.Messages; import com.linkedin.r2.message.rest.RestRequest; import com.linkedin.r2.message.rest.RestResponse; import com.linkedin.r2.message.rest.RestStatus; import com.linkedin.r2.message.stream.StreamRequest; import com.linkedin.r2.message.stream.StreamResponse; /** * An adapter for adapting RestRequestHandler to StreamRequestHandler. The adapter would convert StreamRequest to * RestRequest before invoking the handleRequest method, and convert RestResponse to StreamResponse in the callback. * * @author Zhenkai Zhu */ public class StreamRequestHandlerAdapter implements StreamRequestHandler { private final RestRequestHandler _restRequestHandler; public StreamRequestHandlerAdapter(RestRequestHandler restRequestHandler) { _restRequestHandler = restRequestHandler; } @Override public void handleRequest(StreamRequest request, final RequestContext requestContext, final Callback<StreamResponse> callback) { Messages.toRestRequest(request, new Callback<RestRequest>() { @Override public void onError(Throwable e) { callback.onError(e); } @Override public void onSuccess(RestRequest restRequest) { _restRequestHandler.handleRequest(restRequest, requestContext, Messages.toRestCallback(callback)); } }); } }