package kukaWii.wiiHandle.filter;
import java.util.concurrent.BlockingQueue;
import kukaWii.wiiHandle.consumer.IPacketConsumer;
import kukaWii.wiiHandle.packet.AbstractPacket;
import kukaWii.wiiHandle.provider.AbstractPacketProvider;
public abstract class AbstractPacketFilter extends AbstractPacketProvider implements IPacketConsumer{
private BlockingQueue<AbstractPacket> input;
private boolean run = true;
@Override
public void registerQueue(BlockingQueue<AbstractPacket> inputQueue) {
input = inputQueue;
}
/**
* Diese Methode wird vom Filter aufgerufen, um ein Paket zu ver�ndern.
* @param input
* @return AbstractPacket, wenn null, dann wird dieses nicht in die outputQueueAufgenommen
*/
public abstract AbstractPacket compute(AbstractPacket input);
@Override
public void start() {
this.run = true;
new Thread(new Runnable() {
@Override
public void run() {
while(run){
try {
AbstractPacket res = compute(input.take());
if(res != null){
providePacket(res);
}
} catch (InterruptedException e) {
}
}
}
}).start();
}
@Override
public void stop(){
this.run = false;
}
@Override
public void checkAntwortzeit(AbstractPacket packet) {
}
}