Skip to main content

PairResponseMessage

Struct PairResponseMessage 

Source
pub struct PairResponseMessage {
    pub result: Option<DeRecResult>,
    pub sender_kind: i32,
    pub communication_info: Option<CommunicationInfo>,
    pub nonce: u64,
    pub parameter_range: Option<ParameterRange>,
    pub timestamp: Option<Timestamp>,
}
Expand description

PairResponseMessage is the response to a PairRequestMessage.

§Purpose

This message completes the pairing handshake. It informs the initiator:

  • whether the pairing was accepted or rejected
  • the responder’s role and identity information
  • the responder’s supported parameter range

§Differences from PairRequestMessage

  • Does not include encryption public keys, as those were already exchanged via ContactMessage and PairRequestMessage
  • Includes a Result field indicating success or failure

§Semantics

  • If result indicates success, a secure channel is considered established
  • If result indicates failure, the pairing MUST be treated as unsuccessful and no further protocol messages should be exchanged on this channel

The nonce MUST match the value provided in the request, ensuring that the response corresponds to the same pairing session.

Fields§

§result: Option<DeRecResult>

Result of processing the pairing request.

Indicates whether the pairing was successful or failed. Failure may occur due to:

  • incompatible parameter ranges
  • failed authentication at the application layer
  • invalid or malformed request data
§sender_kind: i32

The role of the sender of this message.

This informs the initiator whether the responder is acting as an Owner or a Helper.

§communication_info: Option<CommunicationInfo>

Application-level identifying information of the responder.

Intended for user-facing identification and display purposes.

§nonce: u64

Nonce identifying the pairing session.

This value MUST exactly match the nonce received in the PairRequestMessage. A mismatch indicates an invalid or unrelated pairing attempt and SHOULD result in rejection.

§parameter_range: Option<ParameterRange>

Parameter range supported by the responder.

The initiator combines this with its own parameter range to determine the final agreed configuration for the channel.

§timestamp: Option<Timestamp>

Timestamp indicating when this message was created.

Used for observability and may assist in replay detection or timeout handling, depending on the implementation.

Implementations§

Source§

impl PairResponseMessage

Source

pub fn sender_kind(&self) -> SenderKind

Returns the enum value of sender_kind, or the default if the field is set to an invalid enum value.

Source

pub fn set_sender_kind(&mut self, value: SenderKind)

Sets sender_kind to the provided enum value.

Trait Implementations§

Source§

impl Clone for PairResponseMessage

Source§

fn clone(&self) -> PairResponseMessage

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PairResponseMessage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for PairResponseMessage

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Message for PairResponseMessage

Source§

fn encoded_len(&self) -> usize

Returns the encoded length of the message without a length delimiter.
Source§

fn clear(&mut self)

Clears the message, resetting all fields to their default.
Source§

fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>
where Self: Sized,

Encodes the message to a buffer. Read more
Source§

fn encode_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message to a newly allocated buffer.
Source§

fn encode_length_delimited( &self, buf: &mut impl BufMut, ) -> Result<(), EncodeError>
where Self: Sized,

Encodes the message with a length-delimiter to a buffer. Read more
Source§

fn encode_length_delimited_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message with a length-delimiter to a newly allocated buffer.
Source§

fn decode(buf: impl Buf) -> Result<Self, DecodeError>
where Self: Default,

Decodes an instance of the message from a buffer. Read more
Source§

fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>
where Self: Default,

Decodes a length-delimited instance of the message from the buffer.
Source§

fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>
where Self: Sized,

Decodes an instance of the message from a buffer, and merges it into self. Read more
Source§

fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>
where Self: Sized,

Decodes a length-delimited instance of the message from buffer, and merges it into self.
Source§

impl PartialEq for PairResponseMessage

Source§

fn eq(&self, other: &PairResponseMessage) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for PairResponseMessage

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.