/** * Subscribe to events from the chat service. * @return A future publishing chat events as intermediate results. */ public ISubscriptionIntermediateFuture<ChatEvent> subscribeToEvents() { if(subscribers==null) { subscribers = new LinkedHashSet<SubscriptionIntermediateFuture<ChatEvent>>(); } SubscriptionIntermediateFuture<ChatEvent> ret = new SubscriptionIntermediateFuture<ChatEvent>(); subscribers.add(ret); return ret; }
public ISubscriptionIntermediateFuture<String> subscribeToLottery() { final SubscriptionIntermediateFuture<String> ret = new SubscriptionIntermediateFuture<String>(); // final TerminableIntermediateFuture<String> ret = (TerminableIntermediateFuture<String>)SFuture.getNoTimeoutFuture(TerminableIntermediateFuture.class, agent); ret.setTerminationCommand(new ITerminationCommand() { public void terminated(Exception reason) { subscriptions.remove(ret); } public boolean checkTermination(Exception reason) { return true; } }); subscriptions.add(ret); return ret; }
/** * Put a file. * @param file The file data. * @param path The target path. * @return True, when the file has been copied. */ public ISubscriptionIntermediateFuture<Long> uploadFile(IInputConnection con, String path, String name) { // TerminableIntermediateFuture<Long> ret = new TerminableIntermediateFuture<Long>(); // ret.setFinished(); // return ret; // System.out.println("uploadFile: "+Thread.currentThread()); try { return con.writeToOutputStream(new FileOutputStream(path+File.separator+name), agent); } catch(Exception e) { return new SubscriptionIntermediateFuture<Long>(e); } }
/** * Asynchronous read. * @return Bytes one by one till end of stream or closed. */ public ISubscriptionIntermediateFuture<byte[]> aread() { ISubscriptionIntermediateFuture<byte[]> ret = future; if(ret==null) { if(con==null) { future = new SubscriptionIntermediateFuture<byte[]>(); ret = future; } else { ret = con.aread(); } } return ret; }
/** * Asynchronous read. * @return Bytes one by one till end of stream or closed. */ public ISubscriptionIntermediateFuture<byte[]> aread() { ISubscriptionIntermediateFuture<byte[]> ret = future; if(ret==null) { if(con==null) { future = new SubscriptionIntermediateFuture<byte[]>(); ret = future; } else { ret = con.aread(); } } return ret; }
/** * Subscribe to events from the chat service. * @return A future publishing chat events as intermediate results. */ public ISubscriptionIntermediateFuture<ChatEvent> subscribeToEvents() { if(subscribers==null) { subscribers = new LinkedHashSet<SubscriptionIntermediateFuture<ChatEvent>>(); } final SubscriptionIntermediateFuture<ChatEvent> ret = new SubscriptionIntermediateFuture<ChatEvent>(); subscribers.add(ret); ret.setTerminationCommand(new TerminationCommand() { public void terminated(Exception reason) { subscribers.remove(ret); } }); return ret; }
/** * Put a file. * @param file The file data. * @param path The target path. * @return True, when the file has been copied. */ public ISubscriptionIntermediateFuture<Long> uploadFile(IInputConnection con, String path, String name) { // TerminableIntermediateFuture<Long> ret = new TerminableIntermediateFuture<Long>(); // ret.setFinished(); // return ret; // System.out.println("uploadFile: "+Thread.currentThread()); try { return con.writeToOutputStream(new FileOutputStream(path+File.separator+name), agent); } catch(Exception e) { return new SubscriptionIntermediateFuture<Long>(e); } }
/** * Subscribe to the time service. * Every couple of seconds, a string with the current time will be * sent to the subscriber. */ public ISubscriptionIntermediateFuture<String> subscribe() { // Add a subscription to the set of subscriptions. final SubscriptionIntermediateFuture<String> ret = new SubscriptionIntermediateFuture<String>(); subscriptions.add(ret); ret.setTerminationCommand(new TerminationCommand() { /** * The termination command allows to be informed, when the subscription ends, * e.g. due to a communication error or when the service user explicitly * cancels the subscription. */ public void terminated(Exception reason) { System.out.println("removed subscriber due to: "+reason); subscriptions.remove(ret); } }); return ret; }
final SubscriptionIntermediateFuture<Tuple2<String, Object>> ret = new SubscriptionIntermediateFuture<Tuple2<String,Object>>(); resfuts.add(ret); ret.setTerminationCommand(new TerminationCommand()
/** * Perform periodical steps and block some milliseconds in between. */ public ISubscriptionIntermediateFuture<Integer> subscribeToSteps(final long millis) { final SubscriptionIntermediateFuture<Integer> ret = new SubscriptionIntermediateFuture<Integer>(); agent.getComponentFeature(IExecutionFeature.class).waitForDelay(0, new IComponentStep<Void>() { public IFuture<Void> execute(IInternalAccess ia) { for(int i=1; !ret.isDone(); i++) { ia.getComponentFeature(IExecutionFeature.class).waitForDelay(millis).get(); ret.addIntermediateResult(Integer.valueOf(i)); } return IFuture.DONE; } }); return ret; } }
return new SubscriptionIntermediateFuture<byte[]>(new RuntimeException("Stream has reader")); ifuture = new SubscriptionIntermediateFuture<byte[]>(new ITerminationCommand()
return new SubscriptionIntermediateFuture<byte[]>(new RuntimeException("Stream has reader")); ifuture = new SubscriptionIntermediateFuture<byte[]>(new ITerminationCommand()
return new SubscriptionIntermediateFuture<byte[]>(new RuntimeException("Stream has reader")); ifuture = new SubscriptionIntermediateFuture<byte[]>(new ITerminationCommand()
final SubscriptionIntermediateFuture<T> ret = new SubscriptionIntermediateFuture<T>();
/** * */ public ISubscriptionIntermediateFuture<String> test() { SubscriptionIntermediateFuture<String> ret = new SubscriptionIntermediateFuture<String>(); ret.addIntermediateResult("a"); ret.addIntermediateResult("b"); ret.addIntermediateResult("c"); ret.setFinished(); return ret; } }
/** * Search for services. */ // read public <T> ISubscriptionIntermediateFuture<T> searchServices(ClassInfo type, IComponentIdentifier cid, String scope, IAsyncFilter<T> filter) { final SubscriptionIntermediateFuture<T> ret = new SubscriptionIntermediateFuture<T>(); Iterator<T> sers = (Iterator<T>)getServices(type); if(sers!=null && sers.hasNext() && !RequiredServiceInfo.SCOPE_NONE.equals(scope)) { Collection<T> ssers = checkScope(sers, cid, scope, false); checkAsyncFilters(filter, ssers.iterator()).addResultListener(new IntermediateDelegationResultListener<T>(ret)); // filter checks in loop are possibly performed outside of synchornized block // searchLoopServices(filter, sers, cid, scope).addResultListener(new IntermediateDelegationResultListener<T>(ret)); } else { ret.setFinished(); } return ret; }
ret = new SubscriptionIntermediateFuture<String>(); ((SubscriptionIntermediateFuture<String>)ret).setResult(null); return ret;
final SubscriptionIntermediateFuture<Email> ret = new SubscriptionIntermediateFuture<Email>();
final SubscriptionIntermediateFuture<T> ret = new SubscriptionIntermediateFuture<T>();
final SubscriptionIntermediateFuture<ChangeEvent<Object>> ret = new SubscriptionIntermediateFuture<ChangeEvent<Object>>(); ret.setTerminationCommand(new TerminationCommand()