--- /dev/null
+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;
+ }
+
+}