package org.webpieces.nio.api.integ;
import java.nio.ByteBuffer;
import org.webpieces.data.api.BufferPool;
import org.webpieces.nio.api.channels.Channel;
import org.webpieces.nio.api.handlers.DataListener;
import org.webpieces.util.logging.Logger;
import org.webpieces.util.logging.LoggerFactory;
final class ClientDataListener implements DataListener {
private static final Logger log = LoggerFactory.getLogger(ClientDataListener.class);
private BufferPool pool2;
private BytesRecorder recorder;
public ClientDataListener(BufferPool pool2, BytesRecorder recorder) {
this.pool2 = pool2;
this.recorder = recorder;
}
@Override
public void incomingData(Channel channel, ByteBuffer b) {
recorder.recordBytes(b.remaining());
b.position(b.limit());
pool2.releaseBuffer(b);
}
@Override
public void farEndClosed(Channel channel) {
log.info("far end closed");
}
@Override
public void failure(Channel channel, ByteBuffer data, Exception e) {
log.info("failure", e);
}
@Override
public void applyBackPressure(Channel channel) {
log.info("client unregistering for reads");
channel.unregisterForReads();
}
@Override
public void releaseBackPressure(Channel channel) {
log.info("client registring for reads");
channel.registerForReads();
}
}