pub struct Interest {
pub id: InterestId,
pub mode: InterestMode,
pub options: InterestOptions,
pub wire_expr: Option<WireExpr<'static>>,
pub ext_qos: QoSType,
pub ext_tstamp: Option<TimestampType>,
pub ext_nodeid: NodeIdType,
}
Expand description
The INTEREST message is sent to request the transmission of current and optionally future
declarations of a given kind matching a target keyexpr. E.g., an interest could be
sent to request the transmission of all current subscriptions matching a/*
.
The behaviour of a INTEREST depends on the INTEREST MODE.
E.g., the message flow is the following for an Interest
with mode InterestMode::Current
:
A B
| INTEREST |
|------------------>| -- Mode: Current
| | This is an Interest e.g. for subscriber declarations.
| |
| DECL SUBSCRIBER |
|<------------------| -- With interest_id field set
| DECL SUBSCRIBER |
|<------------------| -- With interest_id field set
| DECL SUBSCRIBER |
|<------------------| -- With interest_id field set
| |
| DECL FINAL |
|<------------------| -- With interest_id field set
| |
And the message flow is the following for an Interest
with mode InterestMode::CurrentFuture
:
A B
| INTEREST |
|------------------>| -- This is a DeclareInterest e.g. for subscriber declarations/undeclarations.
| |
| DECL SUBSCRIBER |
|<------------------| -- With interest_id field set
| DECL SUBSCRIBER |
|<------------------| -- With interest_id field set
| DECL SUBSCRIBER |
|<------------------| -- With interest_id field set
| |
| DECL FINAL |
|<------------------| -- With interest_id field set
| |
| DECL SUBSCRIBER |
|<------------------| -- With interest_id field not set
| UNDECL SUBSCRIBER |
|<------------------| -- With interest_id field not set
| |
| ... |
| |
| INTEREST FINAL |
|------------------>| -- Mode: Final
| | This stops the transmission of subscriber declarations/undeclarations.
| |
And the message flow is the following for an Interest
with mode InterestMode::Future
:
A B
| INTEREST |
|------------------>| -- This is a DeclareInterest e.g. for subscriber declarations/undeclarations.
| |
| DECL SUBSCRIBER |
|<------------------| -- With interest_id field not set
| UNDECL SUBSCRIBER |
|<------------------| -- With interest_id field not set
| |
| ... |
| |
| INTEREST FINAL |
|------------------>| -- Mode: Final
| | This stops the transmission of subscriber declarations/undeclarations.
| |
Flags:
- |: Mode The mode of the interest*
-/
- Z: Extension If Z==1 then at least one extension is present
7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+
|Z|Mod|INTEREST |
+-+-+-+---------+
~ id:z32 ~
+---------------+
|A|M|N|R|T|Q|S|K| if Mod!=Final (*)
+---------------+
~ key_scope:z16 ~ if Mod!=Final && R==1
+---------------+
~ key_suffix ~ if Mod!=Final && R==1 && N==1 -- <u8;z16>
+---------------+
~ [int_exts] ~ if Z==1
+---------------+
Mode of declaration:
- Mode 0b00: Final
- Mode 0b01: Current
- Mode 0b10: Future
- Mode 0b11: CurrentFuture
(*) - if K==1 then the interest refers to key expressions
- if S==1 then the interest refers to subscribers
- if Q==1 then the interest refers to queryables
- if T==1 then the interest refers to tokens
- if R==1 then the interest is restricted to the matching key expression, else it is for all key expressions.
- if N==1 then the key expr has name/suffix. If R==0 then N should be set to 0.
- if M==1 then key expr mapping is the one declared by the sender, else it is the one declared by the receiver.
If R==0 then M should be set to 0.
- if A==1 then the replies SHOULD be aggregated
Fields§
§id: InterestId
§mode: InterestMode
§options: InterestOptions
§wire_expr: Option<WireExpr<'static>>
§ext_qos: QoSType
§ext_tstamp: Option<TimestampType>
§ext_nodeid: NodeIdType
Implementations§
Trait Implementations§
impl Eq for Interest
impl StructuralPartialEq for Interest
Auto Trait Implementations§
impl Freeze for Interest
impl RefUnwindSafe for Interest
impl Send for Interest
impl Sync for Interest
impl Unpin for Interest
impl UnwindSafe for Interest
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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>
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 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>
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