package hu.ppke.itk.itkStock.nio.protocol;
import hu.ppke.itk.itkStock.nio.core.AbstractWorker;
import java.util.Hashtable;
public class ProtocolWorker extends AbstractWorker {
private Hashtable<Short, AbstractProtocolCommandWorker> protocolCommandWorkers = new Hashtable<Short, AbstractProtocolCommandWorker>();
public void addProtocolCommandWorker(Short id, AbstractProtocolCommandWorker w) {
if (!protocolCommandWorkers.containsKey(id))
protocolCommandWorkers.put(id, w);
}
public void removeProtocolCommandWorker(Short id) {
protocolCommandWorkers.remove(id);
}
/**
* @param data
* 2 bytes of command-id and the rest is the corresponding data.
*/
@Override
public byte[] response(byte[] data, int count) {
ProtocolMessage m = ProtocolMessage.parseMessage(data);
AbstractProtocolCommandWorker obj = protocolCommandWorkers.get(m.command);
if (obj != null)
return obj.response(m).toByteArray();
else {
System.err.println("Unknown command: " + m.command);
return ("Unknown command: " + m.command).getBytes();
}
}
}