Index - All Packages - All Categories - All Classes
Class Agenda
An AgendaItem composed of other AgendaItems. My stepping action consists of stepping one of my component items. When I exhaust a component item, I unregister and destroy it.
Note: The order in which I select a component item is currently unspecified and uncontrolled (depending on "MuSet::stepper()"). Eventually, it may make sense for me to use the Escalator Algorithm to do prioritized scheduling.
Empty Agendas are also made as do-nothing AgendaItems. The currently get duely get scheduled, stepped, and unscheduled. A possible optimization would be to avoid scheduling do-nothing AgendaItems.
Package: Udanax-Gold
All Superclasses: Object Heaper Abraham AgendaItem
Protocols: Object
Categories: Xanadu-turtle
Class Methodsmake
Instance Methodscreate
Overrides: AgendaItem
createRcvr: receiver
Overrides: AgendaItem
dismantle
Overrides: AgendaItem
registerItem: item
By registering the item, we ensure that if we crash and reboot, the item will be eventually and repeatedly stepped until step returns FALSE, provided we are registered up through the Turtle. Do NOT multiply register the same item.
sendSelfTo: xmtr
Overrides: AgendaItem
step
'step' one of my component items. If I return FALSE, that means there's nothing currently left to do. However, since more AgendaItems may get registered later, there may later be something more for me to do, so I shouldn't necessarily be destroyed. This creates a composition problem: If an Agenda is stored as an item within another Agenda, then when the outer Agenda is stepped and it in turn steps the inner Agenda, if the inner Agenda returns FALSE, the outer Agenda will destroy it. This is all legal and shouldn't be a problem as long as one is aware of this behavior
Overrides: AgendaItem
unregisterItem: item
An item should be unregistered either when it is done (when 'step' returns FALSE) or when it no longer represents something that needs to be done should we crash and reboot. Unregistering an item which is not registered and already forgotten is legal and has no effect.
Index - All Packages - All Categories - All Classes