]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java
Improve logging and project structure
[gpl/argeo-slc.git] / org.argeo.slc.detached / src / main / java / org / argeo / slc / detached / drivers / FileDriver.java
index 5b47e32d64ec5d7eceede9d23a0d7fed4f74d218..2c6429ded5ec9da0ded40a2b96bc1c2b884936e7 100644 (file)
@@ -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;
        }