libduvet/gateway/events

Types

A listener’s own subject, as feed.subscribe makes it.

pub type Listener =
  process.Subject(feed.FeedMessage)

Values

pub fn await_call_ended(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(event.CallEndedEvent, Nil)
pub fn await_call_incoming(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(event.CallIncomingEvent, Nil)
pub fn await_call_ongoing(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(event.CallOngoingEvent, Nil)
pub fn await_call_outgoing(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(event.CallOutgoingEvent, Nil)
pub fn await_close(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(envelope.GatewayCloseReason, Nil)
pub fn await_failure(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(feed.GatewayConnectFailure, Nil)
pub fn await_message_delete(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(event.GatewayMessageDelete, Nil)
pub fn await_payload(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(envelope.GatewayEventPayload, Nil)

Typed ways to wait for what a client publishes, the counterpart of the Dart package’s GatewayEvents streams. Each call drops what it isn’t waiting for, so use one listener per kind (or read the feed with [next]).

pub fn await_ready(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(ready.GatewayReadyData, Nil)
pub fn await_resumed(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(Int, Nil)
pub fn await_state(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(feed.GatewayConnectionState, Nil)
pub fn await_voice_state_update(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(event.VoiceStateEvent, Nil)
pub fn await_voice_video_refused(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(event.VoiceVideoRefusedEvent, Nil)
pub fn next(
  listener: process.Subject(feed.FeedMessage),
  timeout_ms: Int,
) -> Result(feed.FeedMessage, Nil)

The next message, whatever it is.

✨ Search Document