ReactorRejection
extends AxiamException
in package
A reactor delivery or handler answer this SDK refuses (CONTRACT.md §22.3, §22.4).
Every instance results in no reply being published, which hands the outcome
to the registration's failure_policy (§22.8) — never to a synthesized
allow. An SDK that answered allow on behalf of a handler that crashed would
have overridden the operator's fail_closed setting from inside the library.
self::reason() is drawn from a fixed vocabulary that mirrors §22.4's rejection table, so a reactor's own metrics line up with the server's audit records. The message never carries the received or expected MAC, the signing key, or the event payload.
Table of Contents
Constants
- BAD_SIGNATURE : mixed = 'bad_signature'
- The MAC is missing or wrong (§22.4 row 6).
- DEADLINE_PASSED : mixed = 'deadline_passed'
- The dispatch window closed before a reply could be signed (§22.3).
- HANDLER_ERROR : mixed = 'handler_error'
- The handler threw, or could not decide.
- KEY_VERSION_TOO_OLD : mixed = 'key_version_too_old'
- `key_version` is below the replay-protected floor of 2 (§22.4 row 4).
- MALFORMED : mixed = 'malformed'
- The body is not a decodable reactor event.
- MALFORMED_MUTATION : mixed = 'malformed_mutation'
- A `mutate` answer with no patch entries (§22.4 row 10, `malformed_mutation`). There is nothing to gain by putting it on the wire.
- REPLAY : mixed = 'replay'
- The nonce has already been seen inside the freshness window (§8 v2).
- REQUIRE_MFA_NOT_SUPPORTED : mixed = 'require_mfa_not_supported'
- `require_mfa` was answered on an event other than `login.post_auth` (§22.4 row 7). Refused client-side rather than sent: the server would refuse it too, before even looking at the decision.
- STALE : mixed = 'stale'
- `issued_at` is outside ±300 s, in either direction (§22.4 row 5).
- TENANT_MISMATCH : mixed = 'tenant_mismatch'
- The event names another tenant (§22.4 row 2).
- UNKNOWN_EVENT : mixed = 'unknown_event'
- The event name is outside the §22.5 registry — which is also how the §22.7 hot-path exclusion is refused, since those operations are in no registry.
Methods
- __construct() : mixed
- reason() : string
- The fixed-vocabulary rejection category. Safe to log: it is a category name, not a MAC, a key or a payload.
Constants
BAD_SIGNATURE
The MAC is missing or wrong (§22.4 row 6).
public
mixed
BAD_SIGNATURE
= 'bad_signature'
DEADLINE_PASSED
The dispatch window closed before a reply could be signed (§22.3).
public
mixed
DEADLINE_PASSED
= 'deadline_passed'
HANDLER_ERROR
The handler threw, or could not decide.
public
mixed
HANDLER_ERROR
= 'handler_error'
KEY_VERSION_TOO_OLD
`key_version` is below the replay-protected floor of 2 (§22.4 row 4).
public
mixed
KEY_VERSION_TOO_OLD
= 'key_version_too_old'
MALFORMED
The body is not a decodable reactor event.
public
mixed
MALFORMED
= 'malformed'
MALFORMED_MUTATION
A `mutate` answer with no patch entries (§22.4 row 10, `malformed_mutation`). There is nothing to gain by putting it on the wire.
public
mixed
MALFORMED_MUTATION
= 'malformed_mutation'
REPLAY
The nonce has already been seen inside the freshness window (§8 v2).
public
mixed
REPLAY
= 'replay'
REQUIRE_MFA_NOT_SUPPORTED
`require_mfa` was answered on an event other than `login.post_auth` (§22.4 row 7). Refused client-side rather than sent: the server would refuse it too, before even looking at the decision.
public
mixed
REQUIRE_MFA_NOT_SUPPORTED
= 'require_mfa_not_supported'
STALE
`issued_at` is outside ±300 s, in either direction (§22.4 row 5).
public
mixed
STALE
= 'stale'
TENANT_MISMATCH
The event names another tenant (§22.4 row 2).
public
mixed
TENANT_MISMATCH
= 'tenant_mismatch'
UNKNOWN_EVENT
The event name is outside the §22.5 registry — which is also how the §22.7 hot-path exclusion is refused, since those operations are in no registry.
public
mixed
UNKNOWN_EVENT
= 'unknown_event'
Methods
__construct()
public
__construct(string $reason, string $message) : mixed
Parameters
- $reason : string
-
One of the class constants above — a category, never a value from the message.
- $message : string
reason()
The fixed-vocabulary rejection category. Safe to log: it is a category name, not a MAC, a key or a payload.
public
reason() : string