Package-level declarations
Types
Turn and turn about: a signal with a cycle.
Gap acceptance: this group finishes, new arrivals hold.
Sends whichever idle transporter has the shortest journey to the pickup.
Who gets the crossing next, and for how long.
Sends idle transporters in rotation, beginning after whichever was chosen last.
Releases the zone behind after travelling a fixed distance into the next one: the general case, with release at the start and release at the end as its two extremes.
Releases the zone behind only on arrival in the next one. The default, because it is the conservative choice: it keeps transporters a zone further apart, and the separation is rarely critical to how a system performs.
Gives the zone to whoever has been waiting longest.
Sends whichever idle transporter has the longest journey to the pickup.
Chooses which idle transporter is sent to collect an entity.
What an unallocated transporter should do.
Decides what a transporter does when it has nothing to carry.
Sends whichever idle transporter has been allocated fewest times, spreading work across a fleet.
Gives the zone to a transporter carrying something, in preference to an empty one, and otherwise to whoever has waited longest.
Sends every released transporter to one shared waiting place.
Leaves a released transporter where it is.
People cross whenever they arrive; traffic waits.
Sends an idle transporter chosen at random.
Sends a released transporter back to its own home base, so that it waits somewhere chosen rather than wherever its last job happened to end.
Chooses which way a transporter goes.
Sends every transporter along the shortest path, ignoring where other transporters are.
Releases the zone behind at the moment travel into the next begins, letting a follower close up immediately. Use it where the real control system frees a zone as soon as the vehicle's tail crosses the boundary.
Traffic goes whenever it arrives; people wait for a gap.
Chooses which of the transporters waiting for a zone gets it when it comes free.
Decides when a transporter releases the zone behind it.
When a transporter gives up the zone behind it, relative to entering the next one.
Properties
The crossing disciplines a name can select, in the order an interface should offer them.
The idle dispositions a name can select, in the order an interface should offer them.
The allocation rules a name can select, in the order an interface should offer them.
The contention rules a name can select, in the order an interface should offer them.
Functions
The arbiter a name stands for, made fresh.
The rule a name stands for, made fresh.
The rule a name stands for, made fresh -- which matters for CyclicalTransporterRule, whose turn-taking is state that must not be inherited from a rule the pool used before.
The rule a name stands for, made fresh.
The name of an arbiter, or null when it is one no name stands for.
The name of a rule, or null when it is one no name stands for.
The name of a rule, or null when it is one no name stands for.
The name of a rule, or null when it is one no name stands for.