Runs the per-allocation plugin chain on relay ingress and egress.
What problem this solves
Relay traffic must optionally pass through configured plugins before reaching peers or clients. When plugins are disabled, payloads pass through unchanged. Active plugins transform or drop frames inline; passive plugins receive copies via message send with bounded inflight back-pressure and latency budgets.
Internal: called from the data plane on every relay frame. Fail-open vs
fail-closed behaviour is per-plugin via the :fail framework option.
RFCs
Summary
Functions
Runs egress plugins for an allocation before relaying to a peer.
Runs ingress plugins for an allocation before delivering to the client.
Functions
@spec egress(term(), binary(), atom(), {term(), term()}, integer() | nil) :: {:ok, binary()} | :drop
Runs egress plugins for an allocation before relaying to a peer.
Returns {:ok, payload} with the (possibly transformed) payload, or :drop
when an active plugin or fail-closed policy rejects the frame.
Runs ingress plugins for an allocation before delivering to the client.
Returns {:ok, payload} with the (possibly transformed) payload, or :drop
when an active plugin or fail-closed policy rejects the frame.