class Matter::Transport::Exchange

Overview

Represents a message exchange (request/response pair)

In Matter protocol, exchanges are bidirectional conversations identified by an exchange ID. Each exchange tracks:

Defined in:

matter/transport/exchange.cr

Constant Summary

MRP_BACKOFF_BASE = 1.6
MRP_BASE_TIMEOUT = 200

Retransmission parameters (from Matter spec)

MRP_MAX_RETRIES = 5
MRP_STANDALONE_ACK_MS = 200

Constructors

Instance Method Summary

Constructor Detail

def self.new(exchange_id : UInt16, protocol_id : UInt16, session_id : UInt16, initiator : Bool, peer_address : Socket::IPAddress | Nil = nil, peer_node_id : DataType::NodeId | Nil = nil) #

[View source]

Instance Method Detail

def clear_pending_message : Nil #

Clear pending message (successful acknowledgment received)


[View source]
def close : Nil #

Mark exchange as closed


[View source]
def exchange_id : UInt16 #

[View source]
def fail : Nil #

Mark exchange as failed


[View source]
def initiator? : Bool #

[View source]
def needs_retransmit? : Codec::MessageCodec::Message | Nil #

Check if message needs retransmission Returns the message to retransmit, or nil if none needed


[View source]
def peer_address : Socket::IPAddress | Nil #

[View source]
def peer_node_id : DataType::NodeId | Nil #

[View source]
def protocol_id : UInt16 #

[View source]
def session_id : UInt16 #

[View source]
def set_pending_message(message : Codec::MessageCodec::Message) : Nil #

Store message for retransmission if needed


[View source]
def state : State #

[View source]
def timed_out? : Bool #

Check if exchange has timed out


[View source]
def touch : Nil #

Update activity timestamp


[View source]