package hu.ppke.itk.itkStock.nio.core; import hu.ppke.itk.itkStock.nio.protocol.AbstractProtocolCommandWorker; import hu.ppke.itk.itkStock.nio.protocol.ProtocolMessage; import java.util.Hashtable; public class RspHandler { 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); } private byte[] rsp = null; public synchronized boolean handleResponse(byte[] rsp) { this.setRsp(rsp); //this.rsp[2] = 65; ProtocolMessage m = ProtocolMessage.parseMessage(this.rsp); //System.out.println("ASD: "+new String(new byte[]{this.rsp[3]})); AbstractProtocolCommandWorker obj = protocolCommandWorkers.get(m.command); if (obj != null) this.setRsp(obj.response(m).toByteArray()); else { System.err.println("RspHandler: Unknown command: " + m.command); this.setRsp(("RspHandler: Unknown command: " + m.command).getBytes()); } //System.out.println("RESPONSE: " + new String(new byte[]{this.rsp[8]})); this.notify(); return true; } public synchronized void waitForResponse() { while (this.rsp == null) { try { this.wait(); } catch (InterruptedException e) { } } //System.out.println("RESPONSE: " + new String(new byte[]{this.rsp[8]})); } public void setRsp(byte[] rsp) { this.rsp = rsp; } }