X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.detached%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fdetached%2Fdrivers%2FFileDriver.java;fp=org.argeo.slc.detached%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fdetached%2Fdrivers%2FFileDriver.java;h=2c6429ded5ec9da0ded40a2b96bc1c2b884936e7;hb=055bb5d4c9fdf12878e7e5798569101a5c6e441c;hp=5b47e32d64ec5d7eceede9d23a0d7fed4f74d218;hpb=59cecaf156a6b2ca18f50371b8d5c388ab0ca310;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java index 5b47e32d6..2c6429ded 100644 --- a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java +++ b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java @@ -41,32 +41,36 @@ public class FileDriver extends AbstractDriver implements DetachedClient, public synchronized DetachedRequest receiveRequest() throws Exception { DetachedRequest request = (DetachedRequest) receiveFile(requestsDir, - processedRequestsDir); + processedRequestsDir, 0); if (request != null) - log.debug("Received detached request #" + request.getUuid() - + " for ref '" + request.getRef() + "', path=" - + request.getPath()); + if (log.isTraceEnabled()) + log.trace("Received detached request #" + request.getUuid() + + " for ref '" + request.getRef() + "', path=" + + request.getPath()); return request; } public void sendAnswer(DetachedAnswer answer) throws Exception { sendFile(answersDir, answer); - log.debug("Sent detached answer #" + answer.getUuid()); + if (log.isTraceEnabled()) + log.trace("Sent detached answer #" + answer.getUuid()); } public DetachedAnswer receiveAnswer() throws Exception { DetachedAnswer answer = (DetachedAnswer) receiveFile(answersDir, - processedAnswersDir); + processedAnswersDir, getReceiveAnswerTimeout()); if (answer != null) - log.debug("Received detached answer #" + answer.getUuid()); + if (log.isTraceEnabled()) + log.trace("Received detached answer #" + answer.getUuid()); return answer; } public void sendRequest(DetachedRequest request) throws Exception { sendFile(requestsDir, request); - log.debug("Sent detached request #" + request.getUuid() - + " for ref '" + request.getRef() + "', path=" - + request.getPath()); + if (log.isTraceEnabled()) + log.trace("Sent detached request #" + request.getUuid() + + " for ref '" + request.getRef() + "', path=" + + request.getPath()); } protected void sendFile(File dir, DetachedCommunication detCom) @@ -99,8 +103,13 @@ public class FileDriver extends AbstractDriver implements DetachedClient, lockFile.delete(); } + /** + * @param timeout + * in ms, 0 is no timeout + */ protected synchronized DetachedCommunication receiveFile(File dir, - File processedDir) throws Exception { + File processedDir, long timeout) throws Exception { + long begin = System.currentTimeMillis(); File file = null; while (file == null && isActive()) { if (!dir.exists()) @@ -116,6 +125,12 @@ public class FileDriver extends AbstractDriver implements DetachedClient, // silent } } + + long duration = System.currentTimeMillis() - begin; + if (timeout != 0 && duration > timeout) { + throw new DetachedException("Receive file timed out after " + + duration + "ms."); + } } if (!isActive()) @@ -149,9 +164,6 @@ public class FileDriver extends AbstractDriver implements DetachedClient, } // Move to processed dir FileUtils.moveFileToDirectory(file, processedDir, false); - // file.renameTo(new File(processedDir.getAbsolutePath() + - // File.separator - // + file.getName())); return detCom; }