Struct skua::gateway::ShardRunner

source ·
pub struct ShardRunner {
    pub cache: Arc<Cache>,
    pub http: Arc<Http>,
    /* private fields */
}
Available on crate feature gateway only.
Expand description

A runner for managing a Shard and its respective WebSocket client.

Fields§

§cache: Arc<Cache>
Available on crate feature cache only.
§http: Arc<Http>

Implementations§

source§

impl ShardRunner

source

pub fn new(opt: ShardRunnerOptions) -> Self

Creates a new runner for a Shard.

source

pub async fn run(&mut self) -> Result<()>

Starts the runner’s loop to receive events.

This runs a loop that performs the following in each iteration:

  1. checks the receiver for ShardRunnerMessages, possibly from the ShardManager, and if there is one, acts on it.

  2. checks if a heartbeat should be sent to the discord Gateway, and if so, sends one.

  3. attempts to retrieve a message from the WebSocket, processing it into a GatewayEvent. This will block for 100ms before assuming there is no message available.

  4. Checks with the Shard to determine if the gateway event is specifying an action to take (e.g. resuming, reconnecting, heartbeating) and then performs that action, if any.

  5. Dispatches the event via the Client.

  6. Go back to 1.

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

§

type Output = T

Should always be Self
source§

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

§

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

§

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

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