/** * Create a result listener that is executed as an agent step. * @param listener The listener to be executed as an agent step. */ public <T> IResultListener<T> createResultListener(IResultListener<T> listener) { return interpreter.createResultListener(listener); }
public void customResultAvailable(Void result) { injectParent(agent, micromodel).addResultListener(createResultListener(new DelegationResultListener<Void>(ret) { public void customResultAvailable(Void result) { MicroAgentInterpreter.super.initProvidedServices(model, config) .addResultListener(new DelegationResultListener<Void>(ret)); } })); } });
/** * Add a message handler. * @param The handler. */ public void addMessageHandler(IMessageHandler handler) { interpreter.addMessageHandler(handler); }
public IFuture<Void> execute(IInternalAccess ia) { init(model.getModelInfo(), MicroAgentInterpreter.this.config, args) .addResultListener(createResultListener(new DelegationResultListener<Void>(inited) { public void customResultAvailable(Void result) { // Call user code init. microagent.agentCreated().addResultListener(new DelegationResultListener<Void>(inited)); } })); return IFuture.DONE; } };
public void run() { addStep(new StepInfo(step, ret, null, getComponentDescription().getCause().createNext()));//step.toString()))); }
MicroModel mm = getInterpreter().getMicroModel(); if(mm.getBreakpointMethod()!=null)
/** * Add a service to the platform. * If under the same name and type a service was contained, * the old one is removed and shutdowned. * @param type The public service interface. * @param service The service. */ public IFuture<Void> addService(String name, Class<?> type, Object service) { final Future<Void> ret = new Future<Void>(); IFuture<IInternalService> fut = interpreter.addService(name, type, BasicServiceInvocationHandler.PROXYTYPE_DECOUPLED, null, service, null, interpreter.getComponentFetcher()); fut.addResultListener(createResultListener(new ExceptionDelegationResultListener<IInternalService, Void>(ret) { public void customResultAvailable(IInternalService result) { ret.setResult(null); } })); return ret; }
/** * Schedule a step of the component. * May safely be called from external threads. * @param step Code to be executed as a step of the component. * @param delay The delay to wait before step should be done. * @return The result of the step. */ public <T> IFuture<T> scheduleStep(final IComponentStep<T> step, final long delay) { final Future<T> ret = new Future<T>(); SServiceProvider.getService(getServiceContainer(), IClockService.class, RequiredServiceInfo.SCOPE_PLATFORM) .addResultListener(createResultListener(new DelegationResultListener(ret) { public void customResultAvailable(Object result) { IClockService cs = (IClockService)result; cs.createTimer(delay, new ITimedObject() { public void timeEventOccurred(long currenttime) { scheduleStep(step).addResultListener(new DelegationResultListener(ret)); } }); } })); return ret; }
/** * Called from cleanupComponent. */ public IFuture<Void> terminateServiceContainer() { final Future<Void> ret = new Future<Void>(); IResultListener<Void> reslis = new IResultListener<Void>() { public void resultAvailable(Void result) { nosteps = true; exitState(); ret.setResult(result); } public void exceptionOccurred(final Exception exception) { nosteps = true; exitState(); ret.setException(exception); } }; // If platform, do not schedule listener on component as execution service already terminated after terminate service container. if(getComponentIdentifier().getParent()!=null) reslis = createResultListener(reslis); super.terminateServiceContainer().addResultListener(reslis); return ret; }
final Future ret = createStepFuture(step); getComponentDescription().getCause()!=null? getComponentDescription().getCause().createNext()/*step.toString())*/: null; addStep(new StepInfo(step, ret, sc, cause));
this.microagent = createAgent(microclass, model); this.container = createMyServiceContainer(args); Cause cause = sc!=null && sc.getCause()!=null? sc.getCause().createNext()://st.toString()): addStep(new StepInfo(st, new Future(), ServiceCall.getCurrentInvocation(), cause));
public void customResultAvailable(ClassLoader cl) { try { MicroModel mm = loader.loadComponentModel(model.getFilename(), null, cl, new Object[]{model.getResourceIdentifier(), getProviderId().getRoot()}); MicroAgentInterpreter mai = new MicroAgentInterpreter(desc, factory, mm, getMicroAgentClass(model.getFullName()+"Agent", null, cl), arguments, config, parent, binding, copy, realtime, resultlistener, inited); res.setResult(new Tuple2<IComponentInstance, IComponentAdapter>(mai, mai.getComponentAdapter())); } catch(Exception e) { res.setException(e); } } });
public void exceptionOccurred(Exception exception) { collectInjectedResults(); nosteps = true; exitState(); StringWriter sw = new StringWriter(); exception.printStackTrace(new PrintWriter(sw)); microagent.getLogger().severe(microagent.getComponentIdentifier()+", "+microagent.getModel().getFullName()+": Exception during cleanup: "+sw); ret.setResult(null); } }));
super.injectParent(agent, model).addResultListener(new DelegationResultListener<Void>(ret)
public void customResultAvailable(Void result) { collectInjectedResults(); super.customResultAvailable(result); }
MicroModel mm = getInterpreter().getMicroModel(); if(mm.getBreakpointMethod()!=null)
/** * Add a service to the platform. * If under the same name and type a service was contained, * the old one is removed and shutdowned. * @param type The public service interface. * @param service The service. * @param type The proxy type (@see{BasicServiceInvocationHandler}). */ public IFuture<Void> addService(String name, Class<?> type, Object service, String proxytype) { final Future<Void> ret = new Future<Void>(); IFuture<IInternalService> fut = interpreter.addService(name, type, proxytype, null, service, null, interpreter.getComponentFetcher()); fut.addResultListener(createResultListener(new ExceptionDelegationResultListener<IInternalService, Void>(ret) { public void customResultAvailable(IInternalService result) { ret.setResult(null); } })); return ret; }
MicroAgentInterpreter mai = new MicroAgentInterpreter(desc, factory, mm, getMicroAgentClass(model.getFullName()+"Agent", null, cl), arguments, config, parent, binding, copy, realtime, resultlistener, inited); res.setResult(new Tuple2<IComponentInstance, IComponentAdapter>(mai, mai.getComponentAdapter())); MicroAgentInterpreter mai = new MicroAgentInterpreter(desc, factory, mm, getMicroAgentClass(model.getFullName()+"Agent", null, cl), arguments, config, parent, binding, copy, realtime, resultlistener, inited); res.setResult(new Tuple2<IComponentInstance, IComponentAdapter>(mai, mai.getComponentAdapter()));
/** * Create a result listener that is executed as an agent step. * @param listener The listener to be executed as an agent step. */ public <T> IIntermediateResultListener<T> createResultListener(IIntermediateResultListener<T> listener) { return interpreter.createResultListener(listener); }
/** * Remove a belief listener. * @param name The belief name. * @param listener The belief listener. */ public void removeBeliefListener(String name, IBeliefListener listener) { BDIModel bdimodel = (BDIModel)getInterpreter().getMicroModel(); name = bdimodel.getBeliefMappings().containsKey(name) ? bdimodel.getBeliefMappings().get(name) : name; BDIAgentInterpreter ip = (BDIAgentInterpreter)getInterpreter(); String rulename = name+"_belief_listener_"+System.identityHashCode(listener); ip.getRuleSystem().getRulebase().removeRule(rulename); }