X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.detached%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fdetached%2Fdrivers%2FMemoryDriver.java;h=f223f4a07854423dc9e994c5c98b463a36eb04f4;hb=e2e168e633c14fa1557ba59261fd900dac1ad70f;hp=ffae5efda30b843cbec3f8203fbea59407154b16;hpb=fa98571e9fa36276c42bda9535e4352b2e83c933;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/MemoryDriver.java b/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/MemoryDriver.java index ffae5efda..f223f4a07 100644 --- a/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/MemoryDriver.java +++ b/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/MemoryDriver.java @@ -1,31 +1,63 @@ +/* + * Copyright (C) 2010 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.argeo.slc.detached.drivers; import org.argeo.slc.detached.DetachedAnswer; import org.argeo.slc.detached.DetachedClient; +import org.argeo.slc.detached.DetachedDriver; import org.argeo.slc.detached.DetachedRequest; -public class MemoryDriver extends AbstractDriver implements DetachedClient { +/** + * Implements both DetachedClient and DetachedDriver + * using memory access + */ +public class MemoryDriver implements DetachedClient, DetachedDriver { + private DetachedRequest currentRequest = null; + private DetachedAnswer currentAnswer = null; // DRIVER - public DetachedRequest receiveRequest() throws Exception { - // TODO Auto-generated method stub - return null; + public synchronized DetachedRequest receiveRequest() throws Exception { + while (currentRequest == null) + this.wait(500); + return currentRequest; } - public void sendAnswer(DetachedAnswer answer) throws Exception { - // TODO Auto-generated method stub - + public synchronized void sendAnswer(DetachedAnswer answer) throws Exception { + currentAnswer = answer; + this.notify(); } // CLIENT - public DetachedAnswer receiveAnswer() throws Exception { - // TODO Auto-generated method stub - return null; + public synchronized DetachedAnswer receiveAnswer() throws Exception { + while (currentAnswer == null) + this.wait(500); + DetachedAnswer answer = currentAnswer; + currentAnswer = null; + currentRequest = null; + return answer; } - public void sendRequest(DetachedRequest request) throws Exception { - // TODO Auto-generated method stub - + public synchronized void sendRequest(DetachedRequest request) + throws Exception { + currentRequest = request; + this.notify(); } + public void stop() { + // NOTHING + } }