tryHoldZonesFor

fun tryHoldZonesFor(holder: ZoneHolderIfc, zones: List<Zone>, duration: Double, action: ZoneHoldActionIfc): ZoneRequest?(source)

Takes a set of zones for a stated duration, and answers null when some zone of it is already promised.

tryRequestZones for why this exists and what null means, holdZoneFor for why the duration runs from the instant the hold begins rather than from the request.

Return

the request, or null when some zone of the set is already promised to another holder

Parameters

holder

who is taking the space

zones

the zones to take, all on this guide path, distinct, at least one

duration

how long to hold them once the hold begins, strictly positive

action

told when the hold begins and when the clock gives it back