pub struct DetachedOperation { /* private fields */ }Expand description
Durable facts of one committed clean detach, as recorded by the shell.
The atomic detach transaction (terminal append, floor transition, cell
replacement, and binding release) is summarized by its committed
Detached(CleanDeregister) terminal plus the replayable attempt token
retained inside the committed replay cell.
Implementations§
Source§impl DetachedOperation
impl DetachedOperation
Sourcepub fn new<EF, V>(transition: &CommittedDetachTransition<EF, V>) -> Option<Self>
pub fn new<EF, V>(transition: &CommittedDetachTransition<EF, V>) -> Option<Self>
Creates the detach event body from the whole atomic detach transition.
The producer consumes the crate’s own sealed commit
(CommittedDetachTransition has no public constructor, so only
super::commit_detach and super::complete_pending_detach mint
it), exactly like the other five producers: the recorded terminal and
the replay cell supplying the recorded attempt token were born in one
detach commit with full conversation context, so pairing a terminal
with a cell from another detach — or another conversation whose
participant, epoch, and delivery-sequence fields collide — is
unrepresentable:
use liminal_protocol::lifecycle::{CommittedDetachTransition, DetachedOperation};
fn mispair(
conversation_a: &CommittedDetachTransition<(), [u8; 32]>,
conversation_b: &CommittedDetachTransition<(), [u8; 32]>,
) -> Option<DetachedOperation> {
DetachedOperation::new(conversation_a.terminal(), conversation_b.cell())
}A standalone terminal cannot be presented either, so a supersession terminal still belongs only to the attach event that committed it:
use liminal_protocol::lifecycle::{CommittedDetachedTerminal, DetachedOperation};
fn relabel(terminal: &CommittedDetachedTerminal) -> Option<DetachedOperation> {
DetachedOperation::new(terminal)
}Returns None unless the transition’s terminal cause is
CleanDeregister and its cell names that terminal’s exact
participant, ended binding epoch, and committed delivery sequence —
re-validation of invariants the detach commit constructors already
guarantee, surfaced by the aggregate commit as a typed pairing fault
rather than a recorded lie.
Sourcepub const fn detach_attempt_token(self) -> DetachAttemptToken
pub const fn detach_attempt_token(self) -> DetachAttemptToken
Returns the stable detach attempt token retained for replay.
Sourcepub const fn conversation_id(self) -> ConversationId
pub const fn conversation_id(self) -> ConversationId
Returns the conversation whose participant detached.
Sourcepub const fn participant_id(self) -> ParticipantId
pub const fn participant_id(self) -> ParticipantId
Returns the permanent participant identifier/index.
Sourcepub const fn committed_binding_epoch(self) -> BindingEpoch
pub const fn committed_binding_epoch(self) -> BindingEpoch
Returns the binding epoch ended by the detach.
Sourcepub const fn detached_transaction_order(self) -> TransactionOrder
pub const fn detached_transaction_order(self) -> TransactionOrder
Returns the terminal’s immutable transaction-order major.
Sourcepub const fn detached_delivery_seq(self) -> DeliverySeq
pub const fn detached_delivery_seq(self) -> DeliverySeq
Returns the committed Detached record’s delivery sequence.
Trait Implementations§
Source§impl Clone for DetachedOperation
impl Clone for DetachedOperation
Source§fn clone(&self) -> DetachedOperation
fn clone(&self) -> DetachedOperation
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more