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)
|
{
|
System.out.println(Device.getDate(System.currentTimeMillis()) + " - " + ((Device)controller.getDevice()).getIdentifier() + " 2.WAIT " + request + " - Timeout: " + timeout + " - BY TIMEOUT: " + Device.getDate(waitTimestamp));
|
finishedByTimeout = true;
|
}
|
else
|
{
|
// System.out.println(Device.getDate(System.currentTimeMillis()) + " - " + ((Device)controller.getDevice()).getIdentifier() + " 2.WAIT " + request + " - Timeout: " + timeout + " - OK: DIF: " + (System.currentTimeMillis()-waitTimestamp));
|
}
|
}
|
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());
|
}
|
}
|
}
|