Skip to main content

EventStream

Struct EventStream 

Source
pub struct EventStream<S> { /* private fields */ }
Expand description

Adapter from a stream of byte chunks to a stream of SSE events.

Works with any Stream<Item = Result<B, E>> where B: AsRef<[u8]>, which covers Vec<u8>, &[u8], bytes::Bytes, and HTTP client bodies. Executor-agnostic: the only async dependency is the futures-core Stream trait.

Every completed event is yielded before the inner stream is polled again. When the inner stream ends, the parser is finished, remaining events are yielded, and the stream terminates. Polling after termination returns Ready(None) without touching the inner stream. A transport error is yielded as an item and the stream stays usable.

Implementations§

Source§

impl<S> EventStream<S>

Source

pub fn new(stream: S) -> Self

Wrap a byte-chunk stream.

Source

pub fn set_last_event_id(&mut self, id: impl Into<String>)

Seed the last event ID string, for reconnection. Events dispatched before the stream’s first id field report this ID.

Source

pub fn last_event_id(&self) -> &str

The last event ID string. See SseParser::last_event_id.

Source

pub fn retry(&self) -> Option<Duration>

Reconnection time from the most recent valid retry field, if any. See SseParser::retry.

Trait Implementations§

Source§

impl<S: Debug> Debug for EventStream<S>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<S, B, E> FusedStream for EventStream<S>
where S: Stream<Item = Result<B, E>>, B: AsRef<[u8]>,

Source§

fn is_terminated(&self) -> bool

Returns true if the stream should no longer be polled.
Source§

impl<S, B, E> Stream for EventStream<S>
where S: Stream<Item = Result<B, E>>, B: AsRef<[u8]>,

Source§

type Item = Result<Event, Error<E>>

Values yielded by the stream.
Source§

fn poll_next( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Option<Self::Item>>

Attempt to pull out the next value of this stream, registering the current task for wakeup if the value is not yet available, and returning None if the stream is exhausted. Read more
Source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the stream. Read more
Source§

impl<'__pin, S> Unpin for EventStream<S>
where PinnedFieldsOf<__Origin<'__pin, S>>: Unpin,

Auto Trait Implementations§

§

impl<S> Freeze for EventStream<S>
where S: Freeze,

§

impl<S> RefUnwindSafe for EventStream<S>
where S: RefUnwindSafe,

§

impl<S> Send for EventStream<S>
where S: Send,

§

impl<S> Sync for EventStream<S>
where S: Sync,

§

impl<S> UnsafeUnpin for EventStream<S>
where S: UnsafeUnpin,

§

impl<S> UnwindSafe for EventStream<S>
where S: UnwindSafe,

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 = !

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

fn try_from(value: U) -> Result<T, !>

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

impl<S, T, E> TryStream for S
where S: Stream<Item = Result<T, E>> + ?Sized,

Source§

type Ok = T

The type of successful values yielded by this future
Source§

type Error = E

The type of failures yielded by this future
Source§

fn try_poll_next( self: Pin<&mut S>, cx: &mut Context<'_>, ) -> Poll<Option<Result<<S as TryStream>::Ok, <S as TryStream>::Error>>>

Poll this TryStream as if it were a Stream. Read more