@Override public Result update(DocumentUpdate update, DocumentProtocol.Priority pri) { UpdateDocumentMessage msg = new UpdateDocumentMessage(update); msg.setPriority(pri); return send(msg); }
@Override public Result remove(DocumentId id, DocumentProtocol.Priority pri) { RemoveDocumentMessage msg = new RemoveDocumentMessage(id); msg.setPriority(pri); return send(msg); }
@Override public Result get(DocumentId id, DocumentProtocol.Priority pri) { GetDocumentMessage msg = new GetDocumentMessage(id, "[all]"); msg.setPriority(pri); return send(msg); }
@Override public Result put(Document document, DocumentProtocol.Priority pri) { PutDocumentMessage msg = new PutDocumentMessage(new DocumentPut(document)); msg.setPriority(pri); return send(msg); }
private Reply syncSend(Message msg, Duration timeout) { if (timeout != null) { msg.setTimeRemaining(timeout.toMillis()); } try { RequestMonitor monitor = new RequestMonitor(); msg.setContext(monitor); msg.pushHandler(this); // store monitor Result result = null; while (result == null || result.type() == Result.ResultType.TRANSIENT_ERROR) { result = session.send(msg); if (result != null && result.isSuccess()) { break; } Thread.sleep(100); } if (!result.isSuccess()) { throw new DocumentAccessException(result.getError().toString()); } return monitor.waitForReply(); } catch (InterruptedException e) { throw new DocumentAccessException(e); } }