package de.tum.in.i22.uc.cm.processing;
import de.tum.in.i22.uc.cm.distribution.Location;
import de.tum.in.i22.uc.cm.processing.dummy.IDummyProcessor;
/**
* A abstract processor. Taking two interfaces to two other processors as an
* argument.
*
* @author Florian Kelbert
*
*/
public abstract class Processor<I1 extends Processor<?, ?>, I2 extends Processor<?, ?>> {
protected I1 _iface1;
protected I2 _iface2;
protected final Location _location;
public Processor(Location location) {
_location = location;
}
public Location getLocation(){
return _location;
}
public void init(I1 iface1, I2 iface2) {
if (_iface1 == null || _iface1 instanceof IDummyProcessor) {
_iface1 = iface1;
}
if (_iface2 == null || _iface2 instanceof IDummyProcessor) {
_iface2 = iface2;
}
}
public abstract void stop();
}