package art.servers.colorsserver.M.protocol; import art.library.model.devices.Device; import art.library.utils.synchro.Mutex; import art.servers.colorsserver.controller.ControllerController; public class M_Request { public ControllerController controller = null; public M_Message request = null; public M_Message response = null; public Mutex mutex = new Mutex(); public boolean finishedByTimeout = false; public long waitTimestamp = 0; public void send (int timeout) { try { mutex.lockWrite(timeout); } catch (Exception e) { } } public void receive (M_Message response) { try { this.response = response; mutex.releaseWrite(); } catch (Exception e) { } } public void waitResponse (int timeout) { try { waitTimestamp = System.currentTimeMillis(); mutex.lockWrite(timeout); boolean exitByTimeout = ((System.currentTimeMillis()-waitTimestamp) >= timeout); if (exitByTimeout == true) { finishedByTimeout = true; } else { } } catch (Exception e) { } } public boolean equals (Object object) { try { M_Request request = (M_Request)object; if ((request.waitTimestamp != waitTimestamp)) return(false); if (request.request.controller != this.request.controller) return(false); if (request.request.directive != this.request.directive) return(false); if (request.request.table != this.request.table) return(false); // if (request.request..length != requestPDU.information.length) return(false); // // if (ArrayUtils.iguales(request.requestPDU.information, requestPDU.information) == false) return(false); return(true); } catch (Exception e) { } return(false); } public String toString() { try { String result = Device.getDate(waitTimestamp) + " - Controller: " + request.controller + " - Directive: " + request.directive + " - Table: " + request.table; return(result); } catch (Exception e) { return(super.toString()); } } }