]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java
Rename packages
[gpl/argeo-slc.git] / org.argeo.slc.detached / src / main / java / org / argeo / slc / detached / drivers / FileDriver.java
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
new file mode 100644 (file)
index 0000000..89522ed
--- /dev/null
@@ -0,0 +1,68 @@
+package org.argeo.slc.detached.drivers;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import org.argeo.slc.detached.DetachedClient;
+import org.argeo.slc.detached.DetachedDriver;
+import org.argeo.slc.detached.DetachedException;
+import org.argeo.slc.detached.DetachedStepAnswer;
+import org.argeo.slc.detached.DetachedStepRequest;
+
+public class FileDriver implements DetachedDriver, DetachedClient {
+       private File requestDir;
+       private File answerDir;
+
+       public synchronized DetachedStepRequest receiveRequest() throws Exception {
+               if (!requestDir.exists())
+                       throw new DetachedException("Request dir "
+                                       + requestDir.getCanonicalPath() + " does not exist.");
+
+               File file = null;
+               while (file == null) {
+                       File[] files = requestDir.listFiles();
+                       if (files.length > 0)
+                               file = files[0];
+                       else
+                               Thread.sleep(1000);
+               }
+
+               ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
+               DetachedStepRequest request = (DetachedStepRequest) in.readObject();
+               in.close();
+
+               file.delete();// move it to a processed dir instead?
+               return request;
+       }
+
+       public void sendAnswer(DetachedStepAnswer answer) throws Exception {
+               // TODO Auto-generated method stub
+
+       }
+
+       public DetachedStepAnswer receiveAnswer() throws Exception {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       public void sendRequest(DetachedStepRequest request) throws Exception {
+               File file = new File(requestDir.getPath() + File.separator
+                               + request.getUuid());
+               ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(
+                               file));
+               out.writeObject(request);
+               out.close();
+       }
+
+       public void setRequestDir(File requestDir) {
+               this.requestDir = requestDir;
+       }
+
+       public void setAnswerDir(File answerDir) {
+               this.answerDir = answerDir;
+       }
+
+}