pub fn admit_contract_deadline(
qos: QoSProfile,
served: QoSPolicyMask,
ages: &'static [AgeMonitorSpec],
topic: &str,
) -> (QoSProfile, Option<&'static AgeMonitorSpec>)Expand description
phase-462 W5b – what a subscription’s creation does about its contract
deadline, decided from the backend’s OWN answer
(Session::supported_qos_policies) at the moment it is created.
The served set is a run-time fact – a C backend answers through the vtable (issue 1329) – so it is asked here rather than restated in a build table that could disagree with it. Three outcomes:
- the backend honours
DEADLINEand the profile carries the deadline: the backend judges it, nothing is armed; - the backend does not honour
DEADLINE: a profile deadline EQUAL to the contract’s is stripped (it came from the contract, and refusing it at create would turn a judgeable promise into a boot failure), and the row is armed so the silence rule judges it; - the profile never carried the deadline (a registration path that does not fold the launch overrides): the backend cannot judge what it was never told, so the row is armed too.
A profile deadline that DIFFERS from the contract’s is the caller’s own request and is left alone, so a backend that cannot serve it still refuses it by name. Returns the profile to create with and the row to arm.