X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.slc.detached%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fdetached%2Fdrivers%2FFileDriver.java;fp=org.argeo.slc.detached%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fdetached%2Fdrivers%2FFileDriver.java;h=89522ed0aaacf7ba07ff43a23b3b70334787c9f0;hb=ca0badfce48057d058b0bf9f0dc2efe07affb46b;hp=0000000000000000000000000000000000000000;hpb=8efbf5c9755ae7739458c293e5be23583d1bb4b4;p=gpl%2Fargeo-slc.git 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 index 000000000..89522ed0a --- /dev/null +++ b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java @@ -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; + } + +}