ClientBuilder

Struct ClientBuilder 

pub struct ClientBuilder<T> {
    transport: T,
    options: ClientOptions,
    persistence: SessionPersistence,
    command_channel_capacity: usize,
    message_channel_capacity: usize,
}
Expand description

Builder for an MqttClient.

Obtain one with MqttClient::builder, set the persistence backend and channel capacities, then call start:

use finmqtt_tokio::transport::TcpTransport;
use finmqtt_tokio::{ClientOptions, FilePersistence, MqttClient};

let (owner, client, messages) = MqttClient::builder(
    TcpTransport::new("broker.example.com", 1883),
    ClientOptions::new("my-client".parse().unwrap()).reconnect(),
)
.persistence(FilePersistence::new("session.journal"))
.command_channel_capacity(512)
.start()
.await?;

Fields§

§transport: T§options: ClientOptions§persistence: SessionPersistence§command_channel_capacity: usize§message_channel_capacity: usize

Implementations§

§

impl<T: Transport + Send + Sync + 'static> ClientBuilder<T>

pub(crate) const fn new(transport: T, options: ClientOptions) -> Self

Creates a builder with default wiring and no persistence.

pub fn persistence(self, persistence: impl Into<SessionPersistence>) -> Self

Sets how the session is durably persisted across restarts.

Pass a backend builder: FilePersistence for a journal file, or TursoPersistence (with the turso feature) for a turso database. Defaults to no persistence.

pub const fn command_channel_capacity(self, capacity: usize) -> Self

Sets the command channel capacity (default DEFAULT_COMMAND_CHANNEL_CAPACITY).

Bounds how many publish/subscribe/unsubscribe commands may be queued before callers must await; raising it trades memory for burst tolerance.

pub const fn message_channel_capacity(self, capacity: usize) -> Self

Sets the inbound message channel capacity (default DEFAULT_MESSAGE_CHANNEL_CAPACITY).

Bounds how many received messages buffer for the MessageStream before backpressure pauses inbound reads.

pub async fn start(self) -> Result<(EventLoopHandle, MqttClient, MessageStream)>

Starts the client, loading any persisted session first.

Returns the EventLoopHandle that owns the spawned event loop, the client handle, and the MessageStream of incoming PUBLISH messages. The event loop runs as long as the EventLoopHandle lives; keep it and call stop for a graceful shutdown. This method returns immediately; the first connection attempt happens in the background. To block until the broker accepted the connection, await connection_status(). wait_until_connected() on the returned client.

§Errors

Returns an I/O error if the persistence backend cannot be opened or its persisted state cannot be loaded.

Auto Trait Implementations§

§

impl<T> Freeze for ClientBuilder<T>
where T: Freeze,

§

impl<T> !RefUnwindSafe for ClientBuilder<T>

§

impl<T> Send for ClientBuilder<T>
where T: Send,

§

impl<T> Sync for ClientBuilder<T>
where T: Sync,

§

impl<T> Unpin for ClientBuilder<T>
where T: Unpin,

§

impl<T> !UnwindSafe for ClientBuilder<T>

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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

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

§

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

§

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