package test.r2.perf;
import com.linkedin.common.callback.Callback;
import com.linkedin.data.ByteString;
import com.linkedin.r2.message.stream.entitystream.ReadHandle;
import com.linkedin.r2.message.stream.entitystream.Reader;
/**
* @auther Zhenkai Zhu
*/
public class PerfStreamReader<T> implements Reader
{
private ReadHandle _rh;
private final Callback<T> _callback;
private final T _response;
public PerfStreamReader(Callback<T> callback, T response)
{
_callback = callback;
_response = response;
}
@Override
public void onInit(ReadHandle rh)
{
_rh = rh;
_rh.request(1000);
}
@Override
public void onDataAvailable(ByteString data)
{
_rh.request(1);
}
@Override
public void onDone()
{
_callback.onSuccess(_response);
}
@Override
public void onError(Throwable e)
{
_callback.onError(e);
}
}