Skip to main content

SubscriptionStream

Struct SubscriptionStream 

Source
pub struct SubscriptionStream { /* private fields */ }
Expand description

A connected subscription whose background reader surfaces delivered messages.

Construct with SubscriptionStream::open; the background reader starts immediately and runs until the stream is dropped. Pull delivered messages with SubscriptionStream::recv_timeout.

Implementations§

Source§

impl SubscriptionStream

Source

pub fn open( address: &str, channel: &str, accepted_schemas: Vec<SchemaId>, ) -> Result<Self, SdkError>

Connects to address, performs the handshake, subscribes to channel, and starts the background reader that drains delivered messages.

accepted_schemas is the client’s schema-compatibility list; pass an empty vector to let the server select the channel’s configured schema (the server’s negotiation contract).

§Errors

Returns SdkError::Connection when the TCP connection or socket configuration fails, and SdkError::Protocol when the handshake or subscribe is rejected, or the socket cannot be cloned for the reader thread.

Source

pub fn open_with_auth( address: &str, channel: &str, accepted_schemas: Vec<SchemaId>, auth_token: &[u8], ) -> Result<Self, SdkError>

Connects, handshakes carrying auth_token, subscribes to channel, and starts the background reader.

A subscription owns a dedicated connection (the v1 shape), so it presents its own credential in its own Connect frame; the token a request/response transport was built with lives on that transport’s socket and cannot travel here. Additive to open: an empty token is exactly the open-access handshake open performs, so an ungated server sees byte-identical bytes either way.

The server compares the token during the handshake and answers a mismatch with ConnectError before closing, which surfaces here as SdkError::Connection.

accepted_schemas is the client’s schema-compatibility list; pass an empty vector to let the server select the channel’s configured schema.

§Errors

Returns SdkError::Connection when the TCP connection or socket configuration fails or the token is rejected, and SdkError::Protocol when the subscribe is rejected, or the socket cannot be cloned for the reader thread.

Source

pub fn open_registered( address: &str, channel: &str, accepted_schemas: Vec<SchemaId>, registration: WorkerRegistration, ) -> Result<Self, SdkError>

Connects, handshakes, registers the connection as the worker registration names, then subscribes to channel, so the server can tell which worker the subscription belongs to (a subscription owns its own connection, so the worker’s push connection cannot say it).

§Errors

As open, and SdkError::Protocol when the server rejects the registration (the reason is carried in the error).

Source

pub fn recv_timeout( &self, timeout: Duration, ) -> Result<DeliveredMessage, SdkError>

Blocks up to timeout for the next delivered message from the server.

§Errors

Returns SdkError::Connection when no message arrives within timeout. Once the reader has stopped and every held delivery has been taken, returns the error it stopped with: the server’s mid-stream SubscribeError, its Disconnect, the read or decode failure itself, or SdkError::Backpressure naming a delivery too large for the mailbox.

Source

pub fn stats(&self) -> Result<MailboxStats, SdkError>

The mailbox counters: deliveries and bytes held now and at peak, how often the reader stopped reading for a consumer that had not made room, refused and stray frames, and errors no consumer was left to receive.

§Errors

Returns SdkError::Connection when the mailbox lock is poisoned.

Source

pub const fn subscription_id(&self) -> u64

The server-assigned id for this subscription.

Trait Implementations§

Source§

impl Debug for SubscriptionStream

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for SubscriptionStream

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more