Skip to main content

Subscriber

Struct Subscriber 

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

A connection locked into pub/sub mode.

Obtained by calling Client::subscribe or Client::psubscribe. The underlying transport is consumed — create a separate Client for regular commands while this subscriber is active.

§Example

use ember_client::Client;

#[tokio::main]
async fn main() -> Result<(), ember_client::ClientError> {
    let mut publisher = Client::connect("127.0.0.1", 6379).await?;
    let subscriber_conn = Client::connect("127.0.0.1", 6379).await?;

    let mut sub = subscriber_conn.subscribe(&["news"]).await?;

    publisher.publish("news", "breaking: hello world").await?;

    let msg = sub.recv().await?;
    println!("got: {:?}", msg.data);
    Ok(())
}

Implementations§

Source§

impl Subscriber

Source

pub async fn recv(&mut self) -> Result<Message, ClientError>

Blocks until the next message arrives on any subscribed channel.

Subscription confirmation frames (subscribe/psubscribe) are skipped silently — only actual message frames are returned.

Source

pub async fn subscribe(&mut self, channels: &[&str]) -> Result<(), ClientError>

Subscribes to additional channels without leaving sub mode.

Source

pub async fn unsubscribe(self, channels: &[&str]) -> Result<Client, ClientError>

Unsubscribes from the given channels.

When all subscriptions have been removed the inner Client is returned so the connection can be reused for regular commands.

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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