Skip to main content

RequestContext

Struct RequestContext 

Source
pub struct RequestContext<'a, S> {
    pub state: &'a S,
    pub destination: DestinationHash,
    pub data: &'a [u8],
    pub requester: Option<IdentityHash>,
    pub requested_at: InstantMillis,
    /* private fields */
}

Fields§

§state: &'a S§destination: DestinationHash§data: &'a [u8]§requester: Option<IdentityHash>§requested_at: InstantMillis

Implementations§

Source§

impl<S> RequestContext<'_, S>

Source

pub fn respond(&mut self, data: impl AsRef<[u8]>) -> Result<(), Decline>

Send a normal application response exactly as supplied.

This is the default for text, protocol messages, and arbitrary byte payloads:

context.respond("pong")

RNS calls this payload “packed”, but it does not require MessagePack. Use respond_messagepack_bytes only when the peer specifically expects a MessagePack bin value, and the file methods only for named-file/resource semantics.

Source

pub fn respond_messagepack_bytes(&mut self, bytes: &[u8]) -> Result<(), Decline>

Encode bytes as one MessagePack bin value before responding.

Source

pub fn respond_static_messagepack_bytes( &mut self, bytes: &'static [u8], ) -> Result<(), Decline>

Encode static bytes as one MessagePack bin value without first copying the source.

Source

pub fn respond_static_file( &mut self, name: &'static str, bytes: &'static [u8], ) -> Result<(), Decline>

Respond with a Reticulum Resource whose metadata names the file for native clients.

The bytes remain borrowed from static storage; resource segmentation copies only the current transfer window into the outgoing resource buffer.

Source

pub fn write_packed( &mut self, bytes: &[u8], ) -> Result<&mut Self, ResponseCapacityExceeded>

Source

pub fn respond_token(&self) -> RespondToken

The token to answer this request later. You can keep it, return Err(Decline::Ignore) now, and answer from another task through the platform command handle.

In this context, “keeping it” usually means capturing it somewhere in your AppState

Auto Trait Implementations§

§

impl<'a, S> !RefUnwindSafe for RequestContext<'a, S>

§

impl<'a, S> !Send for RequestContext<'a, S>

§

impl<'a, S> !Sync for RequestContext<'a, S>

§

impl<'a, S> !UnwindSafe for RequestContext<'a, S>

§

impl<'a, S> Freeze for RequestContext<'a, S>

§

impl<'a, S> Unpin for RequestContext<'a, S>

§

impl<'a, S> UnsafeUnpin for RequestContext<'a, S>

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