/** * Perform a list of additions. */ @MultiplexDistributor(SequentialMultiplexDistributor.class) @TargetMethod(value="add", parameters={int.class, int.class}) public IIntermediateFuture<Integer> add(List<Object[]> vals);
/** * Create a new listener. */ public IntermediateMethodResultListener(Future fut, Method method, Object[] args, Method muxmethod) { Class<? extends IMultiplexDistributor> cdcl = SimpleMultiplexDistributor.class; IFilter<Tuple2<IService, Object[]>> fil = null; IParameterConverter conv = null; if(muxmethod.isAnnotationPresent(MultiplexDistributor.class)) { MultiplexDistributor mda = muxmethod.getAnnotation(MultiplexDistributor.class); fil = (IFilter<Tuple2<IService, Object[]>>)createValue(mda.filter(), agent.getFetcher()); conv = (IParameterConverter)createValue(mda.paramconverter(), agent.getFetcher()); cdcl = mda.value(); } muldis = (IMultiplexDistributor)createValue(cdcl); IIntermediateFuture<Object> muldisres = muldis.init(method, args, fil, conv); Class<? extends IMultiplexCollector> mccl = FlattenMultiplexCollector.class; if(muxmethod.isAnnotationPresent(MultiplexCollector.class)) { MultiplexCollector mc = muxmethod.getAnnotation(MultiplexCollector.class); mccl = mc.value(); } IMultiplexCollector coll = (IMultiplexCollector)createValue(mccl); coll.init(fut, method, args, muxmethod); muldisres.addResultListener(coll); }
/** * Create a new listener. */ public IntermediateMethodResultListener(Future fut, Method method, Object[] args, Method muxmethod) { Class<? extends IMultiplexDistributor> cdcl = SimpleMultiplexDistributor.class; IFilter<Tuple2<IService, Object[]>> fil = null; IParameterConverter conv = null; if(muxmethod.isAnnotationPresent(MultiplexDistributor.class)) { MultiplexDistributor mda = muxmethod.getAnnotation(MultiplexDistributor.class); fil = (IFilter<Tuple2<IService, Object[]>>)createValue(mda.filter(), agent.getFetcher()); conv = (IParameterConverter)createValue(mda.paramconverter(), agent.getFetcher()); cdcl = mda.value(); } muldis = (IMultiplexDistributor)createValue(cdcl); IIntermediateFuture<Object> muldisres = muldis.init(method, args, fil, conv); Class<? extends IMultiplexCollector> mccl = FlattenMultiplexCollector.class; if(muxmethod.isAnnotationPresent(MultiplexCollector.class)) { MultiplexCollector mc = muxmethod.getAnnotation(MultiplexCollector.class); mccl = mc.value(); } IMultiplexCollector coll = (IMultiplexCollector)createValue(mccl); coll.init(fut, method, args, muxmethod); muldisres.addResultListener(coll); }
/** * Perform a list of additions and summing up. */ @MultiplexDistributor(SequentialMultiplexDistributor.class) @MultiplexCollector(SumMultiplexCollector.class) @TargetMethod(value="add", parameters={int.class, int.class}) public IFuture<Integer> sum(List<Object[]> vals);