class
Matter::Transport::Exchange
- Matter::Transport::Exchange
- Reference
- Object
Overview
Represents a message exchange (request/response pair)
In Matter protocol, exchanges are bidirectional conversations identified by an exchange ID. Each exchange tracks:
- Exchange ID
- Protocol ID
- Whether we initiated the exchange
- Pending acknowledgments
- Retransmission state
Defined in:
matter/transport/exchange.crConstant 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
-
#clear_pending_message : Nil
Clear pending message (successful acknowledgment received)
-
#close : Nil
Mark exchange as closed
- #exchange_id : UInt16
-
#fail : Nil
Mark exchange as failed
- #initiator? : Bool
-
#needs_retransmit? : Codec::MessageCodec::Message | Nil
Check if message needs retransmission Returns the message to retransmit, or nil if none needed
- #peer_address : Socket::IPAddress | Nil
- #peer_node_id : DataType::NodeId | Nil
- #protocol_id : UInt16
- #session_id : UInt16
-
#set_pending_message(message : Codec::MessageCodec::Message) : Nil
Store message for retransmission if needed
- #state : State
-
#timed_out? : Bool
Check if exchange has timed out
-
#touch : Nil
Update activity timestamp
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)
#
Instance Method Detail
def needs_retransmit? : Codec::MessageCodec::Message | Nil
#
Check if message needs retransmission Returns the message to retransmit, or nil if none needed
def set_pending_message(message : Codec::MessageCodec::Message) : Nil
#
Store message for retransmission if needed