package org.webpieces.nio.impl.threading;
import java.nio.ByteBuffer;
import org.webpieces.nio.api.channels.Channel;
import org.webpieces.nio.api.handlers.DataListener;
import org.webpieces.util.threading.SessionExecutor;
public class ThreadDataListener implements DataListener {
private DataListener dataListener;
private SessionExecutor executor;
public ThreadDataListener(DataListener dataListener, SessionExecutor executor) {
this.dataListener = dataListener;
this.executor = executor;
}
@Override
public void incomingData(Channel channel, ByteBuffer b) {
executor.execute(channel, new Runnable() {
@Override
public void run() {
dataListener.incomingData(channel, b);
}
});
}
@Override
public void farEndClosed(Channel channel) {
executor.execute(channel, new Runnable() {
@Override
public void run() {
dataListener.farEndClosed(channel);
}
});
}
@Override
public void failure(Channel channel, ByteBuffer data, Exception e) {
executor.execute(channel, new Runnable() {
@Override
public void run() {
dataListener.failure(channel, data, e);
}
});
}
@Override
public void applyBackPressure(Channel channel) {
executor.execute(channel, new Runnable() {
@Override
public void run() {
dataListener.applyBackPressure(channel);
}
});
}
@Override
public void releaseBackPressure(Channel channel) {
executor.execute(channel, new Runnable() {
@Override
public void run() {
dataListener.releaseBackPressure(channel);
}
});
}
}