1 package org.objectweb.celtix.bindings; 2 3 import java.util.concurrent.ExecutionException ; 4 import java.util.concurrent.Future ; 5 import java.util.concurrent.TimeUnit ; 6 import java.util.concurrent.TimeoutException ; 7 8 import org.objectweb.celtix.context.InputStreamMessageContext; 9 import org.objectweb.celtix.context.ObjectMessageContext; 10 import org.objectweb.celtix.handlers.HandlerInvoker; 11 12 public class AsyncFuture implements Future <ObjectMessageContext> { 13 14 private final Future <InputStreamMessageContext> futureInputStreamMsgContext; 15 private final AbstractClientBinding absClientBinding; 16 private final HandlerInvoker handlerInvoker; 17 private final DataBindingCallback callback; 18 private final ObjectMessageContext context; 19 20 public AsyncFuture(Future <InputStreamMessageContext> fInputStreamMsgContext, 21 AbstractClientBinding aClientBinding, 22 DataBindingCallback cback, 23 HandlerInvoker hInvoker, 24 ObjectMessageContext ctx) { 25 futureInputStreamMsgContext = fInputStreamMsgContext; 26 absClientBinding = aClientBinding; 27 handlerInvoker = hInvoker; 28 callback = cback; 29 context = ctx; 30 } 31 32 public synchronized ObjectMessageContext get() throws InterruptedException , ExecutionException { 33 InputStreamMessageContext ins = futureInputStreamMsgContext.get(); 34 return absClientBinding.getObjectMessageContextAsync(ins, handlerInvoker, callback, context); 35 } 36 37 public boolean cancel(boolean mayInterruptIfRunning) { 38 return futureInputStreamMsgContext.cancel(mayInterruptIfRunning); 39 } 40 41 public ObjectMessageContext get(long timeout, TimeUnit unit) 42 throws InterruptedException , ExecutionException , TimeoutException { 43 InputStreamMessageContext ins = futureInputStreamMsgContext.get(timeout, unit); 44 return absClientBinding.getObjectMessageContextAsync(ins, handlerInvoker, callback, context); 45 } 46 47 public boolean isCancelled() { 48 return futureInputStreamMsgContext.isCancelled(); 49 } 50 51 public boolean isDone() { 52 return futureInputStreamMsgContext.isDone(); 53 } 54 55 } 56 | Popular Tags |