Skip to main content

JmapEventSource

Struct JmapEventSource 

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

I/O-free streaming coroutine for the JMAP EventSource push channel.

Cooperative shutdown: the coroutine polls the shared AtomicBool at the top of each Self::resume and terminates with Complete(Ok(())) when set. The caller’s resume loop must honour the flag too to interrupt a blocking socket read in flight.

Implementations§

Source§

impl JmapEventSource

Source

pub fn subscribe_url( session: &JmapSession, types: &[&str], ping_seconds: u64, close_after: JmapCloseAfter, ) -> String

Builds the JMAP push subscription URL: event_source_url plus types=<csv>, closeafter=<v> (see JmapCloseAfter) and ping=<seconds>. types may be empty for “all types”.

Source

pub fn new( session: &JmapSession, http_auth: &SecretString, types: &[&str], ping_seconds: u64, close_after: JmapCloseAfter, shutdown: Arc<AtomicBool>, ) -> Result<Self, JmapEventSourceError>

Builds the subscription URL from the session and prepares the initial GET request bytes.

types filters JMAP data types (empty = all). ping_seconds sets the server heartbeat cadence. close_after picks the lifecycle (see JmapCloseAfter). Flip shutdown to wind the coroutine down.

Trait Implementations§

Source§

impl JmapCoroutine for JmapEventSource

Source§

fn resume( &mut self, arg: Option<&[u8]>, ) -> JmapCoroutineState<Self::Yield, Self::Return>

Advances the coroutine.

None on the initial call; Some(data) after a JmapEventSourceYield::WantsRead. Some(&[]) is EOF: it’s an error during the head stage, a clean Complete(Ok(())) during streaming.

Source§

type Yield = JmapEventSourceYield

Intermediate value handed back on every step.
Source§

type Return = Result<(), JmapEventSourceError>

Terminal value. By convention Result<Output, Error>.

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.