use of it.unibo.arces.wot.sepa.commons.response.ErrorResponse in project SEPA by arces-wot.
the class QueryProcessor method process.
public synchronized Response process(QueryRequest req, int timeout) {
if (endpointSemaphore != null)
try {
endpointSemaphore.acquire();
} catch (InterruptedException e) {
return new ErrorResponse(500, e.getMessage());
}
// QUERY the endpoint
long start = System.currentTimeMillis();
Response ret = endpoint.query(req, timeout);
long stop = System.currentTimeMillis();
if (endpointSemaphore != null)
endpointSemaphore.release();
logger.debug("* QUERY PROCESSING (" + (stop - start) + " ms) *");
ProcessorBeans.queryTimings(start, stop);
return ret;
}
use of it.unibo.arces.wot.sepa.commons.response.ErrorResponse in project SEPA by arces-wot.
the class SPUNaive method processInternal.
@Override
public Response processInternal(UpdateResponse update, int timeout) {
logger.debug("* PROCESSING *" + request);
Response ret;
try {
// Query the SPARQL processing service
ret = queryProcessor.process(request, timeout);
if (ret.getClass().equals(ErrorResponse.class)) {
logger.error(ret);
return ret;
}
// Current and previous bindings
BindingsResults results = ((QueryResponse) ret).getBindingsResults();
BindingsResults currentBindings = new BindingsResults(results);
// Initialize the results with the current bindings
BindingsResults added = new BindingsResults(results.getVariables(), null);
BindingsResults removed = new BindingsResults(results.getVariables(), null);
// Create empty bindings if null
if (lastBindings == null)
lastBindings = new BindingsResults(null, null);
logger.debug("Current bindings: " + currentBindings);
logger.debug("Last bindings: " + lastBindings);
// Find removed bindings
long start = System.nanoTime();
for (Bindings solution : lastBindings.getBindings()) {
if (!results.contains(solution) && !solution.isEmpty())
removed.add(solution);
else
results.remove(solution);
}
long stop = System.nanoTime();
logger.debug("Removed bindings: " + removed + " found in " + (stop - start) + " ns");
// Find added bindings
start = System.nanoTime();
for (Bindings solution : results.getBindings()) {
if (!lastBindings.contains(solution) && !solution.isEmpty())
added.add(solution);
}
stop = System.nanoTime();
logger.debug("Added bindings: " + added + " found in " + (stop - start) + " ns");
// Update the last bindings with the current ones
lastBindings = currentBindings;
// Send notification (or end processing indication)
if (!added.isEmpty() || !removed.isEmpty())
ret = new Notification(getUUID(), new ARBindingsResults(added, removed), sequence++);
} catch (Exception e) {
ret = new ErrorResponse(500, e.getMessage());
}
return ret;
}
use of it.unibo.arces.wot.sepa.commons.response.ErrorResponse in project SEPA by arces-wot.
the class UpdateProcessor method process.
public synchronized Response process(UpdateRequest req, int timeout) {
if (endpointSemaphore != null)
try {
endpointSemaphore.acquire();
} catch (InterruptedException e) {
return new ErrorResponse(500, e.getMessage());
}
// UPDATE the endpoint
long start = System.currentTimeMillis();
Response ret = endpoint.update(req, timeout);
long stop = System.currentTimeMillis();
if (endpointSemaphore != null)
endpointSemaphore.release();
logger.debug("* UPDATE PROCESSING (" + (stop - start) + " ms) *");
ProcessorBeans.updateTimings(start, stop);
return ret;
}
use of it.unibo.arces.wot.sepa.commons.response.ErrorResponse in project SEPA by arces-wot.
the class WebsocketServer method onMessage.
@Override
public void onMessage(WebSocket conn, String message) {
jmx.onMessage();
logger.debug("Message from: " + conn.getRemoteSocketAddress() + " [" + message + "]");
Request req = parseRequest(message);
if (req == null) {
logger.debug("Failed to parse: " + message);
ErrorResponse response = new ErrorResponse(HttpStatus.SC_BAD_REQUEST, "Failed to parse: " + message);
conn.send(response.toString());
return;
}
scheduler.schedule(req, new WebsocketEventHandler(conn, jmx));
}
use of it.unibo.arces.wot.sepa.commons.response.ErrorResponse in project SEPA by arces-wot.
the class Scheduler method schedule.
public synchronized void schedule(Request request, ResponseHandler handler) {
int token = getToken();
if (token == -1) {
try {
handler.sendResponse(new ErrorResponse(-1, 500, "Request refused: too many pending requests"));
} catch (IOException e) {
logger.error("Failed to send response on out of tokens");
}
return;
}
// Responder
responders.put(token, handler);
queue.addRequest(new ScheduledRequest(token, request, handler));
// // Notify observers
// setChanged();
// notifyObservers(new ScheduledRequest(token, request, handler));
}
Aggregations