seizeZone

open suspend fun seizeZone(space: GuidedPathSpace, zone: Zone, queue: HoldQueue, requestPriority: Int = QUEUE_PRIORITY, suspensionName: String? = null, onOverlap: ZoneOverlap = ZoneOverlap.RAISE): ZoneAllocation(source)

Takes a zone, waiting for whatever is in it to leave, and suspends until the zone is held.

Nothing is evicted. Whatever vehicle is crossing the zone finishes crossing and leaves in its own time, and only then does this entity have the zone -- which is why this suspends at all. A zone that was already empty is granted inside the call and the process does not suspend.

Return

the hold, which names the zone and when the hold began

Parameters

space

the guide path whose space is wanted

zone

the zone to take, which must be on that guide path

queue

where to wait while the zone drains

requestPriority

orders this entity against others queued at the same instant

suspensionName

names this suspension point when a process has several