[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Remove event from a schedule
From: |
Marcus G. Daniels |
Subject: |
Re: Remove event from a schedule |
Date: |
02 Aug 2001 11:02:00 -0600 |
User-agent: |
Gnus/5.070084 (Pterodactyl Gnus v0.84) Emacs/20.7 |
OJ> It seems that I can't remove Action of a ConcurrentGroup.
How are you acquiring this ConcurrentGroup? The createActionTo$message
will have the side-effect of creating ActionConcurrent objects, but it
will return ActionTo objects. For example, the program below works for me.
import swarm.activity.ScheduleImpl;
import swarm.activity.Schedule;
import swarm.activity.Activity;
import swarm.activity.ActionTo;
import swarm.objectbase.SwarmImpl;
import swarm.objectbase.Swarm;
import swarm.defobj.Zone;
import swarm.Selector;
import swarm.Globals;
import java.util.LinkedList;
import java.util.List;
import java.util.Iterator;
abstract class Agent {
public void step () {
System.out.println ("step " + getClass ().getName () + " @ " +
Globals.env.getCurrentTime ());
}
public void stepA () {
System.out.println ("stepA " + getClass ().getName () + " @ " +
Globals.env.getCurrentTime ());
}
}
class Agent1 extends Agent { }
class Agent2 extends Agent { }
public class RemovalDemoList extends SwarmImpl {
RemovalDemoList (Zone aZone) {
super (aZone);
}
Schedule schedule;
Agent1 agent1;
Agent2 agent2;
List actionList;
public void clean () {
Iterator iterator = actionList.iterator ();
while (iterator.hasNext ()) {
Object obj = iterator.next ();
schedule.remove (obj);
}
}
public Object buildObjects () {
super.buildObjects ();
agent1 = new Agent1 ();
agent2 = new Agent2 ();
return this;
}
public Object buildActions () {
super.buildActions ();
actionList = new LinkedList ();
schedule = new ScheduleImpl (getZone (), false);
try {
Selector stepSel = new Selector (Agent.class, "step", false);
Selector stepSela = new Selector (Agent.class, "stepA", false);
Selector cleanSel = new Selector (getClass (), "clean", false);
actionList.add
(schedule.at$createActionTo$message (0, agent1, stepSel));
actionList.add
(schedule.at$createActionTo$message (10, agent2, stepSel));
schedule.at$createActionTo$message (10, this, cleanSel);
actionList.add
(schedule.at$createActionTo$message (100, agent1, stepSel));
actionList.add
(schedule.at$createActionTo$message (110, agent2, stepSel));
actionList.add
(schedule.at$createActionTo$message (110, agent2, stepSela));
actionList.add
(schedule.at$createActionTo$message (200, agent1, stepSel));
actionList.add
(schedule.at$createActionTo$message (210, agent2, stepSel));
Globals.env.xfprint (schedule);
} catch (Exception e) {
e.printStackTrace (System.err);
System.exit (1);
}
return this;
}
public Activity activateIn (Swarm swarmContext) {
super.activateIn (swarmContext);
schedule.activateIn (this);
return getActivity ();
}
static void main (String args[]) {
Globals.env.initSwarm ("RemovalDemoList", "0.0", "address@hidden",
args);
RemovalDemoList demo = new RemovalDemoList (Globals.env.globalZone);
demo.buildObjects ();
demo.buildActions ();
demo.activateIn (null).run ();
}
}
==================================
Swarm-Support is for discussion of the technical details of the day
to day usage of Swarm. For list administration needs (esp.
[un]subscribing), please send a message to <address@hidden>
with "help" in the body of the message.