package myagent;
event MyEvent {
var name : String
}
agent MyAgent {
on Initialize {
emit(new MyEvent("Agent Initialized"))
}
on MyEvent {
if (occurrence.name.equals("Agent Initialized")) {
}
}
on Shutdown {
}
}
agent MainAgent {
on Initialize {
val myAgent = spawn(typeof(MyAgent))
myAgent.emit(new MyEvent("Agent Initialized"))
}
on MyEvent {
if (occurrence.name.equals("Agent Initialized")) {
}
}
on Shutdown {
}
}
package myagent.behaviors;
import io.sarl.core.Behaviors;
import io.sarl.lang.core.Agent;
import io.sarl.lang.core.AgentContext;
import io.sarl.lang.core.Skill;
public class MyBehavior extends Skill implements Behaviors {
public MyBehavior(AgentContext context) {
super(context);
}
@Override
public void initialization() {
emit(new MyEvent("Agent Initialized"));
}
@Override
public void beforeShutdown() {
}
@SarlCoroutine("myCoroutine")
public void myCoroutine(MyEvent event) {
if (event.getName().equals("Agent Initialized")) {
}
}
}
package myagent;
import io.sarl.core.AgentTask;
import io.sarl.core.Logging;
import io.sarl.lang.core.AgentContext;
import io.sarl.lang.core.BehaviorGuardEvaluator;
import io.sarl.lang.core.EventSpace;
import myagent.behaviors.MyBehavior;
public class MyAgent extends Agent {
protected AgentTask task;
protected MyBehavior behavior;
public MyAgent(AgentContext context, BehaviorGuardEvaluator evaluator) {
super(context, evaluator);
this.behavior = new MyBehavior(context);
this.skill(MyBehavior.class, this.behavior);
}
@Override
protected void before() {
super.before();
Logging loggingSkill = getSkill(Logging.class);
loggingSkill.setLoggingName("MyAgent");
}
@Override
protected void activate() {
super.activate();
spawnMyCoroutine();
}
protected void spawnMyCoroutine() {
EventSpace space = getSkill(EventSpace.class);
this.task = space.runInSpace(MyEvent.class, event -> this.behavior.myCoroutine(event));
}
@Override
protected void destroy() {
this.task?.cancel();
super.destroy();
}
}
package myagent;
import io.sarl.bootstrap.SRE;
import io.sarl.bootstrap.SREBootstrap;
public class Main {
public static void main(String[] args) {
SREBootstrap bootstrap = SRE.getBootstrap();
SRE sre = bootstrap.start();
sre.startAgent(MyAgent.class, null);
}
}