pub struct QueryableBuilder<'a, 'b, Handler, const BACKGROUND: bool = false> { /* private fields */ }Expand description
A builder for initializing a Queryable.
Returned by the
Session::declare_queryable method.
§Examples
let session = zenoh::open(zenoh::Config::default()).await.unwrap();
let queryable = session.declare_queryable("key/expression").await.unwrap();Implementations§
Source§impl<'a, 'b> QueryableBuilder<'a, 'b, DefaultHandler>
impl<'a, 'b> QueryableBuilder<'a, 'b, DefaultHandler>
Sourcepub fn callback<F>(
self,
callback: F,
) -> QueryableBuilder<'a, 'b, Callback<Query>>
pub fn callback<F>( self, callback: F, ) -> QueryableBuilder<'a, 'b, Callback<Query>>
Receive the queries for this queryable with a callback.
§Examples
let session = zenoh::open(zenoh::Config::default()).await.unwrap();
let queryable = session
.declare_queryable("key/expression")
.callback(|query| {println!(">> Handling query '{}'", query.selector());})
.await
.unwrap();Sourcepub fn callback_mut<F>(
self,
callback: F,
) -> QueryableBuilder<'a, 'b, Callback<Query>>
pub fn callback_mut<F>( self, callback: F, ) -> QueryableBuilder<'a, 'b, Callback<Query>>
Receive the queries for this Queryable with a mutable callback.
Using this guarantees that your callback will never be called concurrently.
If your callback is also accepted by the callback method, we suggest you use it instead of callback_mut.
§Examples
let session = zenoh::open(zenoh::Config::default()).await.unwrap();
let mut n = 0;
let queryable = session
.declare_queryable("key/expression")
.callback_mut(move |query| {n += 1;})
.await
.unwrap();Sourcepub fn with<Handler>(
self,
handler: Handler,
) -> QueryableBuilder<'a, 'b, Handler>where
Handler: IntoHandler<Query>,
pub fn with<Handler>(
self,
handler: Handler,
) -> QueryableBuilder<'a, 'b, Handler>where
Handler: IntoHandler<Query>,
Receive the queries for this Queryable with a Handler.
§Examples
let session = zenoh::open(zenoh::Config::default()).await.unwrap();
let queryable = session
.declare_queryable("key/expression")
.with(flume::bounded(32))
.await
.unwrap();
while let Ok(query) = queryable.recv_async().await {
println!(">> Handling query '{}'", query.selector());
}Source§impl<'a, 'b> QueryableBuilder<'a, 'b, Callback<Query>>
impl<'a, 'b> QueryableBuilder<'a, 'b, Callback<Query>>
Sourcepub fn background(self) -> QueryableBuilder<'a, 'b, Callback<Query>, true>
pub fn background(self) -> QueryableBuilder<'a, 'b, Callback<Query>, true>
Make the queryable run in the background until the session is closed.
The background builder doesn’t return a Queryable object anymore.
§Examples
let session = zenoh::open(zenoh::Config::default()).await.unwrap();
// no need to assign and keep a variable with a background queryable
session
.declare_queryable("key/expression")
.callback(|query| {println!(">> Handling query '{}'", query.selector());})
.background()
.await
.unwrap();Source§impl<Handler, const BACKGROUND: bool> QueryableBuilder<'_, '_, Handler, BACKGROUND>
impl<Handler, const BACKGROUND: bool> QueryableBuilder<'_, '_, Handler, BACKGROUND>
Sourcepub fn complete(self, complete: bool) -> Self
pub fn complete(self, complete: bool) -> Self
Change queryable completeness. When queryable is declared as “complete”, it promises to have all the data associated with its key expression, so it’s not necessary to query other nodes for data matching its key expression.
E.g. a queryable serving key expression foo/* is “complete”. The queryer
requests data matching foo/bar and gets data from this queryable
only even if there are other queryables matching foo/bar.
But for “complete” queryable serving key expression foo/bar the request
for foo/* will be sent to other queryables as well as the data from this
queryable doesn’t cover the whole key expression foo/*.
This is default behavior which corresponds to
QueryTarget::BestMatching parameter
of querier’s target.
It’s also possible to forcibly request all available queryables with
QueryTarget::All parameter,
or to request only “complete” ones with
QueryTarget::AllComplete
parameter.
Sourcepub fn allowed_origin(self, origin: Locality) -> Self
pub fn allowed_origin(self, origin: Locality) -> Self
Trait Implementations§
Source§impl<'a, 'b, Handler: Debug, const BACKGROUND: bool> Debug for QueryableBuilder<'a, 'b, Handler, BACKGROUND>
impl<'a, 'b, Handler: Debug, const BACKGROUND: bool> Debug for QueryableBuilder<'a, 'b, Handler, BACKGROUND>
Source§impl IntoFuture for QueryableBuilder<'_, '_, Callback<Query>, true>
impl IntoFuture for QueryableBuilder<'_, '_, Callback<Query>, true>
Source§type Output = <QueryableBuilder<'_, '_, Callback<Query>, true> as Resolvable>::To
type Output = <QueryableBuilder<'_, '_, Callback<Query>, true> as Resolvable>::To
Source§type IntoFuture = Ready<<QueryableBuilder<'_, '_, Callback<Query>, true> as Resolvable>::To>
type IntoFuture = Ready<<QueryableBuilder<'_, '_, Callback<Query>, true> as Resolvable>::To>
Source§fn into_future(self) -> Self::IntoFuture
fn into_future(self) -> Self::IntoFuture
Source§impl<Handler> IntoFuture for QueryableBuilder<'_, '_, Handler>
impl<Handler> IntoFuture for QueryableBuilder<'_, '_, Handler>
Source§type Output = <QueryableBuilder<'_, '_, Handler> as Resolvable>::To
type Output = <QueryableBuilder<'_, '_, Handler> as Resolvable>::To
Source§type IntoFuture = Ready<<QueryableBuilder<'_, '_, Handler> as Resolvable>::To>
type IntoFuture = Ready<<QueryableBuilder<'_, '_, Handler> as Resolvable>::To>
Source§fn into_future(self) -> Self::IntoFuture
fn into_future(self) -> Self::IntoFuture
Source§impl Resolvable for QueryableBuilder<'_, '_, Callback<Query>, true>
impl Resolvable for QueryableBuilder<'_, '_, Callback<Query>, true>
Source§impl<Handler> Resolvable for QueryableBuilder<'_, '_, Handler>
impl<Handler> Resolvable for QueryableBuilder<'_, '_, Handler>
Source§impl Wait for QueryableBuilder<'_, '_, Callback<Query>, true>
impl Wait for QueryableBuilder<'_, '_, Callback<Query>, true>
Source§fn wait(self) -> <Self as Resolvable>::To
fn wait(self) -> <Self as Resolvable>::To
Source§impl<Handler> Wait for QueryableBuilder<'_, '_, Handler>
impl<Handler> Wait for QueryableBuilder<'_, '_, Handler>
Source§fn wait(self) -> <Self as Resolvable>::To
fn wait(self) -> <Self as Resolvable>::To
Auto Trait Implementations§
impl<'a, 'b, Handler, const BACKGROUND: bool> Freeze for QueryableBuilder<'a, 'b, Handler, BACKGROUND>where
Handler: Freeze,
impl<'a, 'b, Handler, const BACKGROUND: bool = false> !RefUnwindSafe for QueryableBuilder<'a, 'b, Handler, BACKGROUND>
impl<'a, 'b, Handler, const BACKGROUND: bool> Send for QueryableBuilder<'a, 'b, Handler, BACKGROUND>where
Handler: Send,
impl<'a, 'b, Handler, const BACKGROUND: bool> Sync for QueryableBuilder<'a, 'b, Handler, BACKGROUND>where
Handler: Sync,
impl<'a, 'b, Handler, const BACKGROUND: bool> Unpin for QueryableBuilder<'a, 'b, Handler, BACKGROUND>where
Handler: Unpin,
impl<'a, 'b, Handler, const BACKGROUND: bool> UnsafeUnpin for QueryableBuilder<'a, 'b, Handler, BACKGROUND>where
Handler: UnsafeUnpin,
impl<'a, 'b, Handler, const BACKGROUND: bool = false> !UnwindSafe for QueryableBuilder<'a, 'b, Handler, BACKGROUND>
Blanket Implementations§
Source§impl<Source> AccessAs for Source
impl<Source> AccessAs for Source
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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