package org.webpieces.nio.impl.threading;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import org.webpieces.nio.api.channels.DatagramChannel;
import org.webpieces.nio.api.handlers.DatagramListener;
import org.webpieces.util.threading.SessionExecutor;
public class ThreadDatagramListener implements DatagramListener {
private DatagramListener listener;
private SessionExecutor executor;
public ThreadDatagramListener(DatagramListener listener, SessionExecutor executor) {
this.listener = listener;
this.executor = executor;
}
@Override
public void incomingData(DatagramChannel channel, InetSocketAddress fromAddr, ByteBuffer b) {
executor.execute(channel, new Runnable() {
@Override
public void run() {
listener.incomingData(channel, fromAddr, b);
}
});
}
@Override
public void failure(DatagramChannel channel, InetSocketAddress fromAddr, ByteBuffer data, Throwable e) {
executor.execute(channel, new Runnable() {
@Override
public void run() {
listener.failure(channel, fromAddr, data, e);
}
});
}
}