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>>>
impl<Signer, Context> App<Signer, Context, KnownVerifiers, BTreeMap<Name, RouteHandler<Context>>>
Sourcepub fn new(signer: Signer, context: Context) -> Self
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,
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,
Sourcepub fn route<Callback, Verifier, Params, Output, G>(
self,
name: impl ToName,
verifier: Verifier,
func: Callback,
) -> Selfwhere
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,
pub fn route<Callback, Verifier, Params, Output, G>(
self,
name: impl ToName,
verifier: Verifier,
func: Callback,
) -> Selfwhere
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).
Sourcepub fn on_start<F>(self, on_start: F) -> Selfwhere
F: OnStartFn<Context> + 'static,
pub fn on_start<F>(self, on_start: F) -> Selfwhere
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.
Sourcepub fn mtu(self, mtu: usize) -> Self
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).
Sourcepub async fn start(self) -> Result<()>
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>
impl<Signer, Context, KnownVerifiers, Routes> Unpin for App<Signer, Context, KnownVerifiers, Routes>
impl<Signer, Context, KnownVerifiers, Routes> UnsafeUnpin for App<Signer, Context, KnownVerifiers, Routes>where
Routes: UnsafeUnpin,
Context: UnsafeUnpin,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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