X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.detached%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fdetached%2Fdrivers%2FFileDriver.java;h=07d062e182e078671d6b63eeb0f9b83812bd9e30;hb=e2e168e633c14fa1557ba59261fd900dac1ad70f;hp=d35e0091478277c3b285d016642742380f9ce909;hpb=1fdb1b4e7b1d2b0cabb6483238301b857a6392fa;p=gpl%2Fargeo-slc.git
diff --git a/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java b/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java
index d35e00914..07d062e18 100644
--- a/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java
+++ b/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java
@@ -40,11 +40,17 @@ import org.apache.commons.logging.LogFactory;
import org.argeo.slc.detached.DetachedAnswer;
import org.argeo.slc.detached.DetachedClient;
import org.argeo.slc.detached.DetachedCommunication;
+import org.argeo.slc.detached.DetachedDriver;
import org.argeo.slc.detached.DetachedException;
import org.argeo.slc.detached.DetachedRequest;
+import org.argeo.slc.detached.DetachedXmlConverter;
import org.springframework.beans.factory.InitializingBean;
-public class FileDriver extends AbstractDriver implements DetachedClient,
+/**
+ * Implements both DetachedClient
and DetachedDriver
+ * using File protocol
+ */
+public class FileDriver implements DetachedClient, DetachedDriver,
InitializingBean {
private final static Log log = LogFactory.getLog(FileDriver.class);
private final static SimpleDateFormat sdf = new SimpleDateFormat(
@@ -66,6 +72,12 @@ public class FileDriver extends AbstractDriver implements DetachedClient,
// Counters to avoid naming files with same prefix
private long lastSentTime = 0;
private int counter = 0;
+
+ private DetachedXmlConverter xmlConverter = null;
+
+ private long receiveAnswerTimeout = 10000l;
+
+ private boolean active = true;
public synchronized DetachedRequest receiveRequest() throws Exception {
DetachedRequest request = (DetachedRequest) receiveFile(requestsDir,
@@ -179,8 +191,10 @@ public class FileDriver extends AbstractDriver implements DetachedClient,
}
}
- if (!isActive())
+ if (!isActive()) {
+ log.debug("DetachedDriver is not active. Leaving receiveFile");
return null;
+ }
File lockFile = nameLockFile(file);
while (lockFile.exists())
@@ -212,6 +226,16 @@ public class FileDriver extends AbstractDriver implements DetachedClient,
FileUtils.moveFileToDirectory(file, processedDir, false);
return detCom;
}
+
+ public synchronized void stop() {
+ log.debug("Stopping Detached Driver");
+ active = false;
+ notifyAll();
+ }
+
+ private synchronized boolean isActive() {
+ return active;
+ }
protected File createLockFile(File file) {
File lockFile = nameLockFile(file);
@@ -281,4 +305,19 @@ public class FileDriver extends AbstractDriver implements DetachedClient,
}
+ public long getReceiveAnswerTimeout() {
+ return receiveAnswerTimeout;
+ }
+
+ public void setReceiveAnswerTimeout(long receiveAnswerTimeout) {
+ this.receiveAnswerTimeout = receiveAnswerTimeout;
+ }
+
+ public DetachedXmlConverter getXmlConverter() {
+ return xmlConverter;
+ }
+
+ public void setXmlConverter(DetachedXmlConverter xmlConverter) {
+ this.xmlConverter = xmlConverter;
+ }
}