Skip to main content

StreamingSession

Struct StreamingSession 

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

A progressive HTML response driven one semantic step at a time from Node.

start(), resume(), and advance() return bytes, completion state, and the next runtime boundary occurrence (if any). Boundary keys retain their authored JSON type: strings are JavaScript strings and finite numbers are JavaScript numbers.

const session = protocol.streamResponse('index.html', '/');
let step = session.start(JSON.stringify(shellState));
res.write(step.bytes);
while (!step.done) {
  const { instanceId, name, key } = step.boundary;
  const state = await loadBoundary(name, key);
  step = session.resume(instanceId, JSON.stringify(state), 'updatable');
  res.write(step.bytes);
  step = session.advance();
  res.write(step.bytes);
}

Implementations§

Source§

impl StreamingSession

Source

pub fn start(&mut self, state_json: String) -> Result<JsStreamStep>

Render until the first runtime boundary occurrence or terminal.

Source

pub fn resume( &mut self, instance_id: u32, state_json: String, mode: Option<String>, ) -> Result<JsStreamStep>

Commit the pending occurrence through its checkpoint, then stop.

mode is "final" (default) or "updatable". Only updatable boundaries accept later update() calls.

Source

pub fn advance(&mut self) -> Result<JsStreamStep>

Write the parent bytes after the committed occurrence.

Valid only after resume(). Returns the next boundary occurrence or completes the document tail.

Source

pub fn update(&mut self, instance_id: u32, patch_json: String) -> Result<Buffer>

Push a projected state patch to a committed updatable boundary.

Trait Implementations§

Source§

impl FromNapiMutRef for StreamingSession

Source§

unsafe fn from_napi_mut_ref( env: napi_env, napi_val: napi_value, ) -> Result<&'static mut Self>

This function called to convert napi values to native rust values Read more
Source§

impl FromNapiRef for StreamingSession

Source§

unsafe fn from_napi_ref( env: napi_env, napi_val: napi_value, ) -> Result<&'static Self>

This function called to convert napi values to native rust values Read more
Source§

impl JavaScriptClassExt for StreamingSession

Source§

fn into_instance<'scope>( self, env: &'scope Env, ) -> Result<ClassInstance<'scope, Self>>

Source§

fn into_reference(self, env: Env) -> Result<Reference<Self>>

Source§

fn instance_of<'env, V: JsValue<'env>>(env: &Env, value: &V) -> Result<bool>

Source§

impl ObjectFinalize for StreamingSession

Source§

fn finalize(self, env: Env) -> Result<(), Error>

Source§

impl ToNapiValue for StreamingSession

Source§

unsafe fn to_napi_value( env: napi_env, val: StreamingSession, ) -> Result<napi_value>

This function called to convert rust values to napi values Read more
Source§

fn into_unknown(self, env: &Env) -> Result<Unknown<'_>, Error>

Source§

impl TypeName for StreamingSession

Source§

impl TypeName for &StreamingSession

Source§

impl TypeName for &mut StreamingSession

Source§

impl TypeTag for StreamingSession

Source§

fn type_tag() -> napi_type_tag

Returns this class’s stable per-type tag. The derive computes it from the class’s content identity string (crate@version::module_path::ClassName), which is fixed for a given class, so repeated calls return the same tag.
Source§

impl ValidateNapiValue for &StreamingSession

Source§

unsafe fn validate(env: napi_env, napi_val: napi_value) -> Result<napi_value>

This function called to validate whether napi value passed to rust is valid type. Read more
Source§

impl ValidateNapiValue for &mut StreamingSession

Source§

unsafe fn validate(env: napi_env, napi_val: napi_value) -> Result<napi_value>

This function called to validate whether napi value passed to rust is valid type. Read more

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> JsValuesTupleIntoVec for T
where T: ToNapiValue,

Source§

impl<T> MaybeTypeTag for T

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.