ConsensusBinding

class ConsensusBinding(val self: NodeId, val transport: RaftTransport, val sessionMembership: ClusterConfig, val storage: RaftStorage, val raftConfig: RaftConfig, val identity: ClientIdentity, channels: (Byte) -> Seam)

Everything a game bootstrap has wired by the time it asks a ConsensusPlacement for its RaftNode.

A placement that constructs a real node uses transport (the session seam's dedicated Raft mux channel) plus the caller-supplied storage/raftConfig/identity; sessionMembership is the initial membership the bootstrap path would have used on its own — the full voter roster for gameNode, a singleton-self cluster for gameHost, a self-only learner for gameJoin/gameSpectate. A placement that hands over a pre-built node (ConsensusPlacement.preBuilt) is free to ignore all of it.

Constructors

Link copied to clipboard
constructor(self: NodeId, transport: RaftTransport, sessionMembership: ClusterConfig, storage: RaftStorage, raftConfig: RaftConfig, identity: ClientIdentity, channels: (Byte) -> Seam)

Properties

Link copied to clipboard

Raft §8 dedup identity supplied by the bootstrap caller.

Link copied to clipboard

Timing and behaviour parameters supplied by the bootstrap caller.

Link copied to clipboard

This peer's NodeId — derived from the session seam's selfId.

Link copied to clipboard

The initial membership the bootstrap path would have used absent a placement override.

Link copied to clipboard

Durable Raft state supplied by the bootstrap caller.

Link copied to clipboard

The Raft messaging seam, already muxed onto the session's dedicated consensus channel.

Functions

Link copied to clipboard
fun channel(tag: Byte): Seam

A Seam view of a dedicated mux channel carved over the same session seam as transport — the factory the federated placement uses to obtain the two side channels its routing needs. Passing the whole factory (rather than pre-provisioning named seams) keeps the binding one field and lets a placement provision only the channels it actually reads.