orbit-invoke 0.3.13

Bounded invocation transport over a dedicated Orbit ring.
Documentation

orbit-invoke

orbit-invoke carries invocation requests between processes of the same Orbit fleet over a dedicated bounded ring. Applications normally use it through orbitive::invoke; direct package access remains available.

An invocation is an operation name, opaque payload bytes, and the identity the ring assigned when the frame was committed:

InvocationId (NetId64, node = submitter) | operation | payload | submitted_at

InvocationBus::submit commits a frame and returns its id; success means publication, not execution. Consumers advance their own InvocationCursor with poll or poll_operation, and overwritten or invalid frames are reported as lagged rather than lost silently. InvocationCodec lets a runtime attach its own typed encoding to an operation name; the ring itself selects no serializer.

The ring is not a durable queue: it provides no acknowledgement, claim, retry, response, or exactly-once guarantee, and which process executes an invocation is the caller's placement decision. Ring geometry is compile-time (ORBIT_INVOKE_RING_CAPACITY, ORBIT_INVOKE_RING_PAYLOAD_CAPACITY).

With the tokio feature, InvocationBus::subscribe returns an InvocationSubscription whose receive waits on the ring's native readiness fd on Linux, FreeBSD, and macOS 14.4 or later, and polls elsewhere.