pub struct PublishOutcome {
pub message_id: u64,
pub delivered: bool,
pub durable_position: Option<u64>,
pub reach: Reach,
}Expand description
Outcome of a server publish.
Carries the assigned message id plus a genuine delivery ack (delivered = the
message was accepted by at least one live subscriber on this publish, after any
dedup-on-delivery suppression).
Fields§
§message_id: u64Transport-scoped message id assigned to the accepted publish.
TRANSPORT-SCOPED, NOT A DURABLE POSITION (G1,
docs/design/wire-durability-gaps-20260831.md): this is a
process-local counter (next_message_id, reset to 1 on every
construction), so it restarts from 1 with the server and two servers
mint the same ids. It is monotonic only within one service instance’s
lifetime and identifies the publish on THIS connection’s wire, nothing
more. The durable position of a publish on a durable channel is the
store-assigned sequence the library now surfaces as
ChannelDelivery::durable_position; putting that on the wire ack is
the A1 resume lane’s frame decision, not a reinterpretation of this
field.
delivered: boolWhether the message was genuinely delivered to a subscriber. false means
the publish was accepted but reached no subscriber (empty channel) or was
a duplicate suppressed by dedup-on-delivery.
durable_position: Option<u64>Store-assigned position of the row this outcome answers for, when the
publish is known to have one. Unlike message_id this IS a durable
position; the connection process puts it on the wire ack only for a
connection that negotiated PUBLISH_ACK_POSITION_VERSION.
reach: ReachWhom the publish reached, the console tap’s word for it (SRV-012 R10): a subscriber, no subscriber, only subscribers that refused it, or nobody because dedup suppressed it.
Trait Implementations§
Source§impl Clone for PublishOutcome
impl Clone for PublishOutcome
impl Copy for PublishOutcome
Source§impl Debug for PublishOutcome
impl Debug for PublishOutcome
impl Eq for PublishOutcome
Source§impl PartialEq for PublishOutcome
impl PartialEq for PublishOutcome
impl StructuralPartialEq for PublishOutcome
Auto Trait Implementations§
impl Freeze for PublishOutcome
impl RefUnwindSafe for PublishOutcome
impl Send for PublishOutcome
impl Sync for PublishOutcome
impl Unpin for PublishOutcome
impl UnsafeUnpin for PublishOutcome
impl UnwindSafe for PublishOutcome
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.