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」(Weave Reliable Messaging Protocol) 的一部分收到 Throttle 訊息或「Delayed Delivery」訊息時,叫用的應用程式回呼。 |
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
[READ ONLY] 對等節點的節點 ID。
|
PeerPort
|
uint16_t
[唯讀] 對等互連節點的通訊埠。
|
ResponseTimeout
|
等待回應的時間上限 (以毫秒為單位);0 會停用回應逾時。
|
RetransInterval
|
uint32_t
每次重新傳輸的時間 (以毫秒為單位);0 會停用重新傳輸。
|
mMsgProtocolVersion
|
uint16_t
ExchangeContext 的訊息通訊協定版本。
|
mWRMPConfig
|
WRMP 設定。
|
公開函式 |
|
---|---|
Abort(void)
|
void
立即取消 Exchange 結構定義並釋出所有參照。
|
AddRef(void)
|
void
將交換環境的參考計數器遞增 1。
|
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)
|
傳送通用:「空值」訊息。
|
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」(Weave Reliable Messaging Protocol) 的一部分收到 Throttle 訊息或「Delayed Delivery」訊息時,叫用的應用程式回呼。
每則訊息都會附上時間值 (以毫秒為單位),指出在此 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
[READ ONLY] 對等節點的節點 ID。
PeerPort
uint16_t PeerPort
[唯讀] 對等互連節點的通訊埠。
RetransInterval
uint32_t RetransInterval
每次重新傳輸的時間 (以毫秒為單位);0 會停用重新傳輸。
公開函式
取消
void Abort( void )
立即取消 Exchange 結構定義並釋出所有參照。
AddRef
void AddRef( void )
將交換環境的參考計數器遞增 1。
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 )
傳送通用:「空值」訊息。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
傳回值 |
|
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 設定成功,否則會發生對應至 WEAVE_ERROR 的 INET_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 訊息至對等節點,要求該節點調節訊息的傳送。
詳細資料 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||
傳回值 |
|