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; + } }