hal/application-lifecycle-tests.lisp
Reading an already-published result never waits and is safe here.
(&body body)(name &body body)All named failures from a completed release sequence.
Named release failures reported without replacing an active transfer.
(protected-form &body cleanup-forms)(&body body)(&key (name "application") blocking-thread-p)Make a one-shot stop controller named NAME. BLOCKING-THREAD-P, when supplied, is a quick predicate which is true on a thread that may request a stop but must never own or wait for one.
(controller function &key attachment already-attached-p)Call quick publication FUNCTION iff CONTROLLER is still running. The controller lock remains held across FUNCTION, making publication atomic with the RUNNING to STOPPING transition. FUNCTION and ALREADY-ATTACHED-P must therefore neither block nor reenter CONTROLLER. A true ALREADY-ATTACHED-P is an idempotent…
(controller function)Run FUNCTION as CONTROLLER's sole teardown, or observe its published result. A concurrent caller waits while the owner runs. A later caller receives the same values or signals the same condition without running FUNCTION again.
(controller)An application attachment was offered after terminal teardown began.
Logical negation of one test or raw truth value.
Test whether two compatible scalars are equal.
(controller)(controller)(controller function &key thread-name)Request FUNCTION as CONTROLLER's teardown on one new worker thread. Return true and the worker when this call reserved ownership, or NIL and NIL when a stop was already requested or published. The worker contains any failure after publishing it; WAIT-FOR-CONTROLLED-STOP and synchronous callers receive that exact…
(controller)
This takes the same mutex. It can complete only when the semantic rejection was signalled after leaving the gate.