Skip to main content

App

Struct App 

Source
pub struct App<Signer, Context, KnownVerifiers, Routes> { /* private fields */ }
Expand description

The application builder and, once started, runtime.

Construct with App::new, configure with App::route, App::on_start, and App::mtu, then call App::start to connect to NFD and begin serving. See the module docs for a full example.

Implementations§

Source§

impl<Signer, Context> App<Signer, Context, KnownVerifiers, BTreeMap<Name, RouteHandler<Context>>>
where Signer: SignMethod + Send + Sync + 'static, Context: Clone + Send + 'static,

Source

pub fn new(signer: Signer, context: Context) -> Self

Starts building an app that signs outgoing Data with signer and clones context into every route and lifecycle callback.

The NFD socket path is fixed to /var/run/nfd/nfd.sock, the standard location for a local NFD install; it isn’t configurable.

Source§

impl<Signer, Context, Verifiers> App<Signer, Context, Verifiers, BTreeMap<Name, RouteHandler<Context>>>
where Signer: SignMethod + Send + Sync + 'static, Context: Clone + Send + 'static, Verifiers: ToVerifier + Send + Sync + 'static,

Source

pub fn route<Callback, Verifier, Params, Output, G>( self, name: impl ToName, verifier: Verifier, func: Callback, ) -> Self
where Callback: IntoInterestCallbackFunction<Params, Context> + Send + Sync + 'static + Fn(AppHandler, Interest<Params>, Context) -> G, G: Future<Output = Option<Data<Output>>> + Send + 'static, Verifier: InterestVerifier + Send + Sync + 'static, Params: TlvDecode + Send + 'static, Output: TlvEncode + 'static,

Registers func to handle Interests whose name has name as a prefix, gated by verifier. Routes are stored in Name order and matched in reverse, so where more than one registered prefix matches an incoming Interest, the route that sorts last is tried first (see the dispatch loop this feeds into, in App::start).

Source

pub fn on_start<F>(self, on_start: F) -> Self
where F: OnStartFn<Context> + 'static,

Registers on_start to run once routes are registered with NFD and the app is ready to serve. This is the usual place to kick off consumer-side work, since it’s the first point at which AppHandler is available.

Source

pub fn mtu(self, mtu: usize) -> Self

Sets the maximum packet size in bytes before NDNLPv2 fragmentation kicks in on send (default 8800, matching NDN’s usual default MTU).

Source

pub async fn start(self) -> Result<()>

Connects to NFD, registers all configured routes, runs on_start, and then serves until AppHandler::shutdown is called or an unrecoverable connection error occurs.

Auto Trait Implementations§

§

impl<Signer, Context, KnownVerifiers, Routes> !RefUnwindSafe for App<Signer, Context, KnownVerifiers, Routes>

§

impl<Signer, Context, KnownVerifiers, Routes> !Send for App<Signer, Context, KnownVerifiers, Routes>

§

impl<Signer, Context, KnownVerifiers, Routes> !Sync for App<Signer, Context, KnownVerifiers, Routes>

§

impl<Signer, Context, KnownVerifiers, Routes> !UnwindSafe for App<Signer, Context, KnownVerifiers, Routes>

§

impl<Signer, Context, KnownVerifiers, Routes> Freeze for App<Signer, Context, KnownVerifiers, Routes>
where Routes: Freeze, Context: Freeze,

§

impl<Signer, Context, KnownVerifiers, Routes> Unpin for App<Signer, Context, KnownVerifiers, Routes>
where Routes: Unpin, Context: Unpin,

§

impl<Signer, Context, KnownVerifiers, Routes> UnsafeUnpin for App<Signer, Context, KnownVerifiers, Routes>
where Routes: UnsafeUnpin, Context: UnsafeUnpin,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V