nl:: Weave:: ExchangeContext
#include <src/lib/core/WeaveExchangeMgr.h>
此類別代表兩個以上節點之間的進行中對話 (ExchangeContext)。
摘要
定義了透過各種傳輸機制 (例如 TCP、UDP 或 Weave Reliable Messaging) 在 ExchangeContext 中的 Weave 訊息編碼和通訊的方法。
公開類型 |
|
---|---|
@34{
|
列舉 |
@35{
|
列舉 |
ConnectionClosedFunct)(ExchangeContext *ec, WeaveConnection *con, WEAVE_ERROR conErr)
|
typedefvoid(*
此函式是當現有 Weave 連線關閉時,要叫用的應用程式回呼。 |
KeyErrorFunct)(ExchangeContext *ec, WEAVE_ERROR keyErr)
|
typedefvoid(*
主要錯誤訊息處理函式的類型。 |
MessageReceiveFunct)(ExchangeContext *ec, const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo, uint32_t profileId, uint8_t msgType, PacketBuffer *payload)
|
typedefvoid(*
此函式是應用程式回呼,用於處理收到的 Weave 訊息。 |
ResponseTimeoutFunct)(ExchangeContext *ec)
|
typedefvoid(*
此函式是接收回應訊息的逾時時間時,要叫用的應用程式回呼。 |
RetransmissionTimeoutFunct)(ExchangeContext *ec)
|
typedefvoid(*
此函式是重新傳送先前傳送訊息的逾時時間時,要叫用的應用程式回呼。 |
Timeout
|
typedefuint32_t
用來在 ExchangeContext 中表示逾時的類型 (以毫秒為單位)。 |
WRMPAckRcvdFunct)(ExchangeContext *ec, void *msgCtxt)
|
typedefvoid(*
此函式是當 Weave 訊息以 Weave Reliable Messaging Protocol 中要求訊息時,會在收到確認訊息時叫用的應用程式回呼。 |
WRMPPauseRcvdFunct)(ExchangeContext *ec, uint32_t pauseTime)
|
typedefvoid(*
此函式就是在收到 Weave Reliable Messaging Protocol 中收到 Throttle 訊息或延遲傳送訊息時叫用的應用程式回呼。 |
WRMPSendErrorFunct)(ExchangeContext *ec, WEAVE_ERROR err, void *msgCtxt)
|
typedefvoid(*
傳送 Weave 訊息時發生錯誤時,此函式就是要叫用的應用程式回呼。 |
公開屬性 |
|
---|---|
AllowDuplicateMsgs
|
bool
布林值指標,指出特定廣告交易平台是否允許重複訊息。
|
AppState
|
void *
指向應用程式專屬狀態物件的指標。
|
Con
|
[READ ONLY] 關聯 Weave 連線。
|
EncryptionType
|
uint8_t
傳送郵件時使用的加密類型。
|
ExchangeId
|
uint16_t
[僅限閱讀] 指派的廣告交易平台 ID。
|
ExchangeMgr
|
[僅限閱讀] 負責廣告交易平台管理員。
|
KeyId
|
uint16_t
傳送訊息時使用的加密金鑰。
|
OnAckRcvd
|
用於接收確認的申請回呼。
|
OnConnectionClosed
|
|
OnDDRcvd
|
申請延遲傳送訊息的應用程式回呼。
|
OnKeyError
|
此函式是應用程式回呼,在收到對等點的金鑰錯誤訊息時叫用。
|
OnMessageReceived
|
|
OnResponseTimeout
|
|
OnRetransmissionTimeout
|
|
OnSendError
|
傳送時發生應用程式回呼的錯誤。
|
OnThrottleRcvd
|
接收接收 Throttle 訊息的應用程式回呼。
|
PeerAddr
|
IPAddress
[唯讀] 對等節點的 IP 位址。
|
PeerIntf
|
InterfaceId
[僅限讀取] 傳送郵件給收件者時使用的外寄介面。
|
PeerNodeId
|
uint64_t
[唯讀] 對等節點的節點 ID。
|
PeerPort
|
uint16_t
[唯讀] 對等節點的通訊埠。
|
ResponseTimeout
|
等待回應的等待時間上限 (以毫秒為單位);0 會停用回應逾時。
|
RetransInterval
|
uint32_t
重新傳輸的間隔時間 (以毫秒為單位);0 表示停用重新傳輸。
|
mMsgProtocolVersion
|
uint16_t
ExchangeContext 的訊息通訊協定版本。
|
mWRMPConfig
|
WRMP 設定。
|
公用函式 |
|
---|---|
Abort(void)
|
void
立即取消 Exchange 結構定義,並撤銷所有參照內容。
|
AddRef(void)
|
void
將廣告交易平台結構定義的參照計數器逐一增加。
|
AutoRequestAck() const
|
bool
傳回每次傳送訊息時是否要求確認。
|
CancelRetrans(void)
|
void
取消 Trickle 重新傳輸機制。
|
Close(void)
|
void
謹慎關閉交換內容。
|
EncodeExchHeader(WeaveExchangeHeader *exchangeHeader, uint32_t profileId, uint8_t msgType, PacketBuffer *msgBuf, uint16_t sendFlags)
|
將交換標頭編碼為訊息緩衝區。
|
GetAutoReleaseKey() const
|
bool
傳回是否要在交換庫釋放時發布與廣告交易平台相關聯的加密金鑰。
|
GetCurrentRetransmitTimeout(void)
|
uint32_t
取得目前的重新傳輸逾時。
|
GetPeerDescription(char *buf, uint32_t bufSize) const
|
void
建構說明對等節點及其相關位址 / 連線資訊的字串。
|
HandleTrickleMessage(const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo)
|
void
處理交換脈絡中的棘手訊息。
|
HasPeerRequestedAck(void) const
|
bool
判斷對等端是否要求確認這個交換機制的至少一則訊息。
|
HasRcvdMsgFromPeer(void) const
|
bool
判斷這個廣告交易平台是否至少收到過同類訊息。
|
IsAckPending(void) const
|
bool
判斷這個廣告交易平台是否已有待確認的確認通知。
|
IsConnectionClosed(void) const
|
bool
判斷 ExchangeContext 是否已建立關聯有效的 WeaveConnection。
|
IsInitiator(void) const
|
bool
判斷情境是否為廣告交易平台的發起人。
|
IsResponseExpected(void) const
|
bool
判斷透過這個交換方式傳送的訊息是否會回應。
|
Release(void)
|
void
發布這個廣告交易平台結構定義的參考資料。
|
SendCommonNullMessage(void)
|
傳送 CC:Null 訊息。
|
SendMessage(uint32_t profileId, uint8_t msgType, PacketBuffer *msgPayload, uint16_t sendFlags, void *msgCtxt)
|
透過這個交換方式傳送 Weave 訊息。
|
SendMessage(uint32_t profileId, uint8_t msgType, PacketBuffer *msgBuf, uint16_t sendFlags, WeaveMessageInfo *msgInfo, void *msgCtxt)
|
透過這個交換方式傳送 Weave 訊息。
|
SetAckPending(bool inAckPending)
|
void
設定是否需將確認通知退回給這個廣告交易平台上的對等點。
|
SetAutoReleaseKey(bool autoReleaseKey)
|
void
設定是否要在交換庫釋出時,釋出與交換作業相關聯的加密金鑰。
|
SetAutoRequestAck(bool autoReqAck)
|
void
設定是否每次傳送訊息時都應要求確認。
|
SetConnectionClosed(bool inConnectionClosed)
|
void
設定 kFlagConnectionClosed 旗標位元。
|
SetDropAck(bool inDropAck)
|
void
設定 WeaveExchangeManager 是否不應傳送這個結構定義的確認訊息。
|
SetInitiator(bool inInitiator)
|
void
設定 kFlagInitiator 旗標位元。
|
SetMsgRcvdFromPeer(bool inMsgRcvdFromPeer)
|
void
設定是否收到這個廣告交易平台對等平台傳送的訊息。
|
SetPeerRequestedAck(bool inPeerRequestedAck)
|
void
設定是否透過這次交換的最後一封郵件提出確認要求。
|
SetResponseExpected(bool inResponseExpected)
|
void
設定是否預期這個廣告交易平台會回覆。
|
SetShouldAutoReleaseConnection(bool autoReleaseCon)
|
void
設定是否要在交換作業釋出時,釋出與廣告交易平台相關聯的 Weave 連線。
|
SetupTrickleRetransmit(uint32_t retransInterval, uint8_t threshold, uint32_t timeout)
|
設定相應的重新傳輸間隔和重新播送門檻,設定複雜重新傳輸機制。
|
ShouldAutoReleaseConnection() const
|
bool
傳回在交換作業釋出時,是否應釋放與廣告交易平台相關聯的 Weave 連線。
|
ShouldDropAck(void) const
|
bool
決定 WeaveExchangeManager 是否不應傳送確認聲明。
|
StartTimerT(void)
|
啟動 Trickle 重新播送演算法的定期重新傳輸計時器機制。
|
TeardownTrickleRetransmit(void)
|
void
取消 Trickle 中的定期計時器,並釋出保存 Weave 訊息的訊息緩衝區,藉此撕裂 Trickle 重新傳輸機制。
|
UseEphemeralUDPPort(void) const
|
bool
傳回透過交換傳送的外寄郵件是否應透過本機臨時 UDP 通訊埠傳送。
|
WRMPFlushAcks(void)
|
|
WRMPSendDelayedDelivery(uint32_t PauseTimeMillis, uint64_t DelayedNodeId)
|
傳送「延遲傳送」郵件,通知寄件者節點先前傳送的郵件在傳送郵件給收件者之前,會在預期延遲送達。
|
WRMPSendThrottleFlow(uint32_t PauseTimeMillis)
|
向對等節點傳送「 Throttle Flow」訊息,要求該節點限制訊息的傳送。
|
公開類型
@34
@34
屬性 | |
---|---|
kSendFlag_AlreadyEncoded
|
表示訊息已編碼。 |
kSendFlag_AutoRetrans
|
用於表示已啟用自動重新傳輸。 |
kSendFlag_DefaultMulticastSourceAddress
|
表示在傳送 IPv6 多點傳送訊息時,應使用預設的 IPv6 來源位址選取項目。 |
kSendFlag_DelaySend
|
用於表示目前郵件的傳送可能需要延遲。 |
kSendFlag_ExpectResponse
|
用於表示預計在指定逾時期間內的回應。 |
kSendFlag_FromInitiator
|
用來表示目前的訊息是廣告交易平台的發起人。 |
kSendFlag_MulticastFromLinkLocal
|
|
kSendFlag_NoAutoRequestAck
|
傳送訊息時,停用自動要求確認功能。 |
kSendFlag_RequestAck
|
用於傳送 WRM 訊息要求確認。 |
kSendFlag_RetainBuffer
|
用於表示在傳送後不應釋出訊息緩衝區。 |
kSendFlag_RetransmissionTrickle
|
用於表示 Trickle 重新傳輸的要求。 |
kSendFlag_ReuseMessageId
|
用於表示可以重複使用郵件標頭中的郵件 ID。 |
kSendFlag_ReuseSourceId
|
用於表示可重複使用郵件標頭中的來源節點 ID。 |
ConnectionClosedFunct
void(* ConnectionClosedFunct)(ExchangeContext *ec, WeaveConnection *con, WEAVE_ERROR conErr)
此函式是當現有 Weave 連線關閉時,要叫用的應用程式回呼。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
KeyErrorFunct
void(* KeyErrorFunct)(ExchangeContext *ec, WEAVE_ERROR keyErr)
MessageReceiveFunct
void(* MessageReceiveFunct)(ExchangeContext *ec, const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo, uint32_t profileId, uint8_t msgType, PacketBuffer *payload)
此函式是應用程式回呼,用於處理收到的 Weave 訊息。
詳細說明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
ResponseTimeoutFunct
void(* ResponseTimeoutFunct)(ExchangeContext *ec)
RetransmissionTimeoutFunct
void(* RetransmissionTimeoutFunct)(ExchangeContext *ec)
WRMPAckRcvdFunct
void(* WRMPAckRcvdFunct)(ExchangeContext *ec, void *msgCtxt)
此函式是當 Weave 訊息以 Weave Reliable Messaging Protocol 中要求訊息時,會在收到確認訊息時叫用的應用程式回呼。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
WRMPPauseRcvdFunct
void(* WRMPPauseRcvdFunct)(ExchangeContext *ec, uint32_t pauseTime)
此函式就是在收到 Weave Reliable Messaging Protocol 中收到 Throttle 訊息或延遲傳送訊息時叫用的應用程式回呼。
上述每則訊息並附上時間值 (以毫秒為單位),指出要暫停在這個 ExchangeContext 上傳送 Weave 訊息的時間。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
WRMPSendErrorFunct
void(* WRMPSendErrorFunct)(ExchangeContext *ec, WEAVE_ERROR err, void *msgCtxt)
傳送 Weave 訊息時發生錯誤時,此函式就是要叫用的應用程式回呼。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
公開屬性
AllowDuplicateMsgs
bool AllowDuplicateMsgs
布林值指標,指出特定廣告交易平台是否允許重複訊息。
AppState
void * AppState
指向應用程式專屬狀態物件的指標。
EncryptionType
uint8_t EncryptionType
傳送郵件時使用的加密類型。
ExchangeId
uint16_t ExchangeId
[僅限閱讀] 指派的廣告交易平台 ID。
KeyId
uint16_t KeyId
傳送訊息時使用的加密金鑰。
OnConnectionClosed
ConnectionClosedFunct OnConnectionClosed
OnMessageReceived
MessageReceiveFunct OnMessageReceived
OnResponseTimeout
ResponseTimeoutFunct OnResponseTimeout
OnRetransmissionTimeout
RetransmissionTimeoutFunct OnRetransmissionTimeout
PeerAddr
IPAddress PeerAddr
[唯讀] 對等節點的 IP 位址。
PeerIntf
InterfaceId PeerIntf
[僅限讀取] 傳送郵件給收件者時使用的外寄介面。
(只有 UDP 才有意義)。
PeerNodeId
uint64_t PeerNodeId
[唯讀] 對等節點的節點 ID。
PeerPort
uint16_t PeerPort
[唯讀] 對等節點的通訊埠。
RetransInterval
uint32_t RetransInterval
重新傳輸的間隔時間 (以毫秒為單位);0 表示停用重新傳輸。
公用函式
取消
void Abort( void )
立即取消 Exchange 結構定義,並撤銷所有參照內容。
AddRef
void AddRef( void )
將廣告交易平台結構定義的參照計數器逐一增加。
AutoRequestAck
bool AutoRequestAck() const
傳回每次傳送訊息時是否要求確認。
CancelRetrans
void CancelRetrans( void )
取消 Trickle 重新傳輸機制。
關閉
void Close( void )
謹慎關閉交換內容。
這個呼叫會減少參考次數,並在參考計數歸零時釋放交換。
EncodeExchHeader
WEAVE_ERROR EncodeExchHeader( WeaveExchangeHeader *exchangeHeader, uint32_t profileId, uint8_t msgType, PacketBuffer *msgBuf, uint16_t sendFlags )
將交換標頭編碼為訊息緩衝區。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
GetAutoReleaseKey
bool GetAutoReleaseKey() const
傳回是否要在交換庫釋放時發布與廣告交易平台相關聯的加密金鑰。
GetCurrentRetransmitTimeout
uint32_t GetCurrentRetransmitTimeout( void )
GetPeerDescription
void GetPeerDescription( char *buf, uint32_t bufSize ) const
建構說明對等節點及其相關位址 / 連線資訊的字串。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
HandleTrickleMessage
void HandleTrickleMessage( const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo )
處理交換脈絡中的棘手訊息。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
HasPeerRequestedAck
bool HasPeerRequestedAck( void ) const
判斷對等端是否要求確認這個交換機制的至少一則訊息。
詳細說明 | |
---|---|
傳回 |
若已要求確認,則傳回「true」,否則傳回「false」。
|
HasRcvdMsgFromPeer
bool HasRcvdMsgFromPeer( void ) const
判斷這個廣告交易平台是否至少收到過同類訊息。
詳細說明 | |
---|---|
傳回 |
如果收到訊息,則傳回「true」,否則傳回「false」。
|
IsAckPending
bool IsAckPending( void ) const
判斷這個廣告交易平台是否已有待確認的確認通知。
IsConnectionClosed
bool IsConnectionClosed( void ) const
IsInitiator
bool IsInitiator( void ) const
判斷情境是否為廣告交易平台的發起人。
詳細說明 | |
---|---|
傳回 |
如果為初始值,則傳回「true」,否則傳回「false」。
|
IsResponseExpected
bool IsResponseExpected( void ) const
判斷透過這個交換方式傳送的訊息是否會回應。
詳細說明 | |
---|---|
傳回 |
如果預期回應則傳回「true」,否則傳回「false」。
|
發布
void Release( void )
發布這個廣告交易平台結構定義的參考資料。
如果倒數計時減少為一,則關閉內容、重設所有應用程式回呼,並停止所有計時器。
SendCommonNullMessage
WEAVE_ERROR SendCommonNullMessage( void )
傳送 CC:Null 訊息。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
傳回值 |
|
SendMessage
WEAVE_ERROR SendMessage( uint32_t profileId, uint8_t msgType, PacketBuffer *msgPayload, uint16_t sendFlags, void *msgCtxt )
透過這個交換方式傳送 Weave 訊息。
詳細說明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||
傳回值 |
|
SendMessage
WEAVE_ERROR SendMessage( uint32_t profileId, uint8_t msgType, PacketBuffer *msgBuf, uint16_t sendFlags, WeaveMessageInfo *msgInfo, void *msgCtxt )
透過這個交換方式傳送 Weave 訊息。
詳細說明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||
傳回值 |
|
SetAckPending
void SetAckPending( bool inAckPending )
設定是否需將確認通知退回給這個廣告交易平台上的對等點。
詳細說明 | |||
---|---|---|---|
參數 |
|
SetAutoReleaseKey
void SetAutoReleaseKey( bool autoReleaseKey )
設定是否要在交換庫釋出時,釋出與交換作業相關聯的加密金鑰。
詳細說明 | |||
---|---|---|---|
參數 |
|
SetAutoRequestAck
void SetAutoRequestAck( bool autoReqAck )
設定是否每次傳送訊息時都應要求確認。
詳細說明 | |||
---|---|---|---|
參數 |
|
SetConnectionClosed
void SetConnectionClosed( bool inConnectionClosed )
設定 kFlagConnectionClosed 旗標位元。
與 ExchangeContext 相關聯的 WeaveConnection 關閉時,系統會設定這個標記。
詳細說明 | |||
---|---|---|---|
參數 |
|
SetDropAck
void SetDropAck( bool inDropAck )
設定 WeaveExchangeManager 是否不應傳送這個結構定義的確認訊息。
僅供內部使用,僅供偵錯使用。
詳細說明 | |||
---|---|---|---|
參數 |
|
SetInitiator
void SetInitiator( bool inInitiator )
設定 kFlagInitiator 旗標位元。
這個旗標是由啟動交換的節點設定。
詳細說明 | |||
---|---|---|---|
參數 |
|
SetMsgRcvdFromPeer
void SetMsgRcvdFromPeer( bool inMsgRcvdFromPeer )
設定是否收到這個廣告交易平台對等平台傳送的訊息。
詳細說明 | |||
---|---|---|---|
參數 |
|
SetPeerRequestedAck
void SetPeerRequestedAck( bool inPeerRequestedAck )
設定是否透過這次交換的最後一封郵件提出確認要求。
詳細說明 | |||
---|---|---|---|
參數 |
|
SetResponseExpected
void SetResponseExpected( bool inResponseExpected )
設定是否預期這個廣告交易平台會回覆。
詳細說明 | |||
---|---|---|---|
參數 |
|
SetShouldAutoReleaseConnection
void SetShouldAutoReleaseConnection( bool autoReleaseCon )
設定是否要在交換作業釋出時,釋出與廣告交易平台相關聯的 Weave 連線。
詳細說明 | |||
---|---|---|---|
參數 |
|
SetupTrickleRetransmit
WEAVE_ERROR SetupTrickleRetransmit( uint32_t retransInterval, uint8_t threshold, uint32_t timeout )
設定相應的重新傳輸間隔和重新播送門檻,設定複雜重新傳輸機制。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回 |
WEAVE_NO_ERROR (如果 Trickle 設定成功),其他 INET_ERROR 會對應至 WEAVE_ERROR。
|
ShouldAutoReleaseConnection
bool ShouldAutoReleaseConnection() const
傳回在交換作業釋出時,是否應釋放與廣告交易平台相關聯的 Weave 連線。
StartTimerT
WEAVE_ERROR StartTimerT( void )
TeardownTrickleRetransmit
void TeardownTrickleRetransmit( void )
取消 Trickle 中的定期計時器,並釋出保存 Weave 訊息的訊息緩衝區,藉此撕裂 Trickle 重新傳輸機制。
UseEphemeralUDPPort
bool UseEphemeralUDPPort( void ) const
傳回透過交換傳送的外寄郵件是否應透過本機臨時 UDP 通訊埠傳送。
WRMPFlushAcks
WEAVE_ERROR WRMPFlushAcks( void )
WRMPSendDelayedDelivery
WEAVE_ERROR WRMPSendDelayedDelivery( uint32_t PauseTimeMillis, uint64_t DelayedNodeId )
傳送「延遲傳送」郵件,通知寄件者節點先前傳送的郵件在傳送郵件給收件者之前,會在預期延遲送達。
郵件傳送前可能會延遲,其中一個原因是收件者的結束節點處於休眠狀態。這封郵件可能是由傳送路徑中的適用中繼節點產生,該節點有充分瞭解收件者,足以推斷延遲傳送作業。收到這則訊息後,寄件者會重新調整重新傳輸計時器,讓需要再次確認的訊息能夠重新傳輸。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
WRMPSendThrottleFlow
WEAVE_ERROR WRMPSendThrottleFlow( uint32_t PauseTimeMillis )
向對等節點傳送「 Throttle Flow」訊息,要求該節點限制訊息的傳送。
詳細說明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||
傳回值 |
|