nl:: Weave:: WeaveConnection
#include <src/lib/core/WeaveMessageLayer.h>
Weave Connection 類別的定義。
摘要
這代表指向另一個 Weave 節點的 TCP 或 BLE 連線。
公開類型 |
|
---|---|
@58{
|
列舉 |
ConnectionClosedFunct)(WeaveConnection *con, WEAVE_ERROR conErr)
|
typedefvoid(*
此函式是在連線關閉時叫用的應用程式回呼。 |
ConnectionCompleteFunct)(WeaveConnection *con, WEAVE_ERROR conErr)
|
typedefvoid(*
此函式是連線設定完成時叫用的應用程式回呼。 |
MessageReceiveFunct)(WeaveConnection *con, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
typedefvoid(*
此函式是應用程式回呼,透過 Weave 連線收到訊息時叫用。 |
NetworkType{
|
列舉 Weave 連線物件的網路類型。 |
ReceiveErrorFunct)(WeaveConnection *con, WEAVE_ERROR err)
|
typedefvoid(*
收到 Weave 訊息時發生錯誤時,所叫用的應用程式回呼即為此函式。 |
State{
|
列舉 Weave 連線物件的 State 資訊。 |
TunneledMsgReceiveFunct)(WeaveConnection *con, const WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
typedefvoid(*
此函式是系統透過 Weave 連線接收通道資料封包時叫用的應用程式回呼。 |
公開屬性 |
|
---|---|
AppState
|
void *
指向應用程式專屬狀態物件的指標。
|
AuthMode
|
WeaveAuthMode
[唯讀] 此驗證模式用於建立連線的預設加密金鑰。
|
DefaultEncryptionType
|
uint8_t
郵件的預設加密類型。
|
DefaultKeyId
|
uint16_t
傳送訊息時要使用的預設加密金鑰。
|
MessageLayer
|
[READ ONLY] 相關聯的 WeaveMessageLayer 物件。
|
NetworkType
|
uint8_t
[僅限閱讀] 相關端點的網路類型。
|
OnConnectionClosed
|
|
OnConnectionComplete
|
|
OnMessageReceived
|
|
OnReceiveError
|
|
OnTunneledMessageReceived
|
|
PeerAddr
|
IPAddress
[READ ONLY] 對等節點的 IP 位址。
|
PeerNodeId
|
uint64_t
[READ ONLY] 對等點的節點 ID。
|
PeerPort
|
uint16_t
[READ ONLY] 對等節點的通訊埠編號。
|
ReceiveEnabled
|
bool
[READ ONLY] 如果已啟用接收功能,則為 True,否則傳回 False。
|
SendDestNodeId
|
bool
如果透過此連線傳送的所有訊息都必須包含明確編碼的目的地節點 ID,則為 True,否則為 false。
|
SendSourceNodeId
|
bool
如果透過此連線傳送的所有訊息都必須包含明確編碼的來源節點 ID,則為「true」,否則傳回「false」。
|
State
|
uint8_t
[READ ONLY] WeaveConnection 物件的狀態,
|
公用函式 |
|
---|---|
Abort(void)
|
void
執行以 TCP 或 BLE 為基礎的 WeaveConnection,不安全關閉,並捨棄可能傳入或傳出對等點的任何資料。
|
AddRef(void)
|
void
保留 WeaveConnection 物件的參照。
|
Close(void)
|
這個外掛程式能執行以 TCP 或 BLE 為基礎的 WeaveConnection 傳送非阻塞式關閉安全關閉,並傳送所有剩餘的外寄資料,再友善通知遠端主機已重設連線。
|
Close(bool suppressCloseLog)
|
這個外掛程式能執行以 TCP 或 BLE 為基礎的 WeaveConnection 傳送非阻塞式關閉安全關閉,並傳送所有剩餘的外寄資料,再友善通知遠端主機已重設連線。
|
Connect(uint64_t peerNodeId)
|
使用衍生自指定節點 ID 的架構 IP 位址,連線至 Weave 節點。
|
Connect(uint64_t peerNodeId, const IPAddress & peerAddr, uint16_t peerPort)
|
使用節點 ID 和/或 IP 位址連線至 Weave 節點。
|
Connect(uint64_t peerNodeId, WeaveAuthMode authMode, const IPAddress & peerAddr, uint16_t peerPort, InterfaceId intf)
|
使用節點 ID 和/或特定介面的 IP 位址連線至 Weave 節點。
|
Connect(uint64_t peerNodeId, WeaveAuthMode authMode, const char *peerAddr, uint16_t defaultPort)
|
使用節點 ID 和/或字串主機名稱連線至 Weave 節點。
|
Connect(uint64_t peerNodeId, WeaveAuthMode authMode, const char *peerAddr, uint16_t peerAddrLen, uint16_t defaultPort)
|
使用節點 ID 和/或字串對等位址連線至 Weave 節點。
|
Connect(uint64_t peerNodeId, WeaveAuthMode authMode, const char *peerAddr, uint16_t peerAddrLen, uint8_t dnsOptions, uint16_t defaultPort)
|
使用節點 ID 和/或字串對等位址連線至 Weave 節點。
|
Connect(uint64_t peerNodeId, WeaveAuthMode authMode, HostPortList hostPortList, InterfaceId intf)
|
使用節點 ID 和/或主機名稱和通訊埠清單連線至 Weave 節點。
|
Connect(uint64_t peerNodeId, WeaveAuthMode authMode, HostPortList hostPortList, uint8_t dnsOptions, InterfaceId intf)
|
使用節點 ID 和/或主機名稱和通訊埠清單連線至 Weave 節點。
|
DisableKeepAlive(void)
|
|
DisableReceive(void)
|
void
停用透過這個 WeaveConnection 接收。
|
EnableKeepAlive(uint16_t interval, uint16_t timeoutCount)
|
|
EnableReceive(void)
|
void
啟用透過這個 WeaveConnection 接收。
|
GetPeerAddressInfo(IPPacketInfo & addrInfo)
|
取得對等端的 IP 位址資訊。
|
GetPeerDescription(char *buf, size_t bufSize) const
|
void
建構一個字串,說明與連線相關聯的對等節點。
|
GetTCPEndPoint(void) const
|
TCPEndPoint *
|
IsIncoming(void) const
|
bool
|
LogId(void) const
|
uint16_t
|
Release(void)
|
void
將 WeaveConnection 物件上的參考計數減少。
|
ResetUserTimeout(void)
|
|
SendMessage(WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
透過已連線的連線傳送 Weave 訊息。
|
SendTunneledMessage(WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
透過 Weave 連線傳送通道封包的函式。
|
SetConnectTimeout(const uint32_t connTimeoutMsecs)
|
void
設定連線逾時,以成功或傳回錯誤。
|
SetIdleTimeout(uint32_t timeoutMS)
|
設定基礎網路層連線的閒置逾時。
|
SetIncoming(bool val)
|
void
|
SetUserTimeout(uint32_t userTimeoutMillis)
|
|
Shutdown(void)
|
執行安全的 TCP 傳送關閉,確保所有傳出資料皆已由對等點的 TCP 堆疊傳送及接收。
|
公開類型
ConnectionClosedFunct
void(* ConnectionClosedFunct)(WeaveConnection *con, WEAVE_ERROR conErr)
ConnectionCompleteFunct
void(* ConnectionCompleteFunct)(WeaveConnection *con, WEAVE_ERROR conErr)
MessageReceiveFunct
void(* MessageReceiveFunct)(WeaveConnection *con, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
此函式是應用程式回呼,透過 Weave 連線收到訊息時叫用。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
NetworkType
NetworkType
Weave 連線物件的網路類型。
屬性 | |
---|---|
kNetworkType_BLE
|
BLE 網路類型。 |
kNetworkType_IP
|
TCP/IP 網路類型。 |
kNetworkType_Unassigned
|
未指派的聯播網類型。 |
ReceiveErrorFunct
void(* ReceiveErrorFunct)(WeaveConnection *con, WEAVE_ERROR err)
收到 Weave 訊息時發生錯誤時,所叫用的應用程式回呼即為此函式。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
狀態
State
Weave 連線物件的 State 資訊。
屬性 | |
---|---|
kState_Closed
|
連線關閉時的狀態。 |
kState_Connected
|
建立連線時的狀態。 |
kState_Connecting
|
嘗試連線時的狀態。 |
kState_EstablishingSession
|
建立安全工作階段時的狀態。 |
kState_ReadyToConnect
|
Weave 連線初始化後的狀態。 |
kState_Resolving
|
執行 DNS 名稱解析時的狀態, |
kState_SendShutdown
|
連線關閉時的狀態。 |
TunneledMsgReceiveFunct
void(* TunneledMsgReceiveFunct)(WeaveConnection *con, const WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
此函式是系統透過 Weave 連線接收通道資料封包時叫用的應用程式回呼。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
公開屬性
AppState
void * AppState
指向應用程式專屬狀態物件的指標。
AuthMode
WeaveAuthMode AuthMode
[唯讀] 此驗證模式用於建立連線的預設加密金鑰。
DefaultEncryptionType
uint8_t DefaultEncryptionType
郵件的預設加密類型。
DefaultKeyId
uint16_t DefaultKeyId
傳送訊息時要使用的預設加密金鑰。
NetworkType
uint8_t NetworkType
[僅限閱讀] 相關端點的網路類型。
OnConnectionClosed
ConnectionClosedFunct OnConnectionClosed
OnConnectionComplete
ConnectionCompleteFunct OnConnectionComplete
OnMessageReceived
MessageReceiveFunct OnMessageReceived
OnReceiveError
ReceiveErrorFunct OnReceiveError
OnTunneledMessageReceived
TunneledMsgReceiveFunct OnTunneledMessageReceived
PeerAddr
IPAddress PeerAddr
[READ ONLY] 對等節點的 IP 位址。
PeerNodeId
uint64_t PeerNodeId
[READ ONLY] 對等點的節點 ID。
PeerPort
uint16_t PeerPort
[READ ONLY] 對等節點的通訊埠編號。
ReceiveEnabled
bool ReceiveEnabled
[READ ONLY] 如果已啟用接收功能,則為 True,否則傳回 False。
SendDestNodeId
bool SendDestNodeId
如果透過此連線傳送的所有訊息都必須包含明確編碼的目的地節點 ID,則為 True,否則為 false。
SendSourceNodeId
bool SendSourceNodeId
如果透過此連線傳送的所有訊息都必須包含明確編碼的來源節點 ID,則為「true」,否則傳回「false」。
公用函式
取消
void Abort( void )
執行以 TCP 或 BLE 為基礎的 WeaveConnection,不安全關閉,並捨棄可能傳入或傳出對等點的任何資料。
對 Abort() 的呼叫會立即終止基礎連線。在這個時間點之後,WeaveConnection 物件就無法再用於進一步通訊。
呼叫 Abort() 可減少與 WeaveConnection 物件相關的參考計數,無論在呼叫方法時是否處於開放/啟用狀態。如果參照計數等於零,系統就會釋出與連線物件相關聯的資源。在這種情況下,應用程式不得與物件進一步互動。
另請參閱:Shutdown()、Abort()、AddRef() 和 Release()。
AddRef
void AddRef( void )
保留 WeaveConnection 物件的參照。
AddRef() 方法會增加與 WeaveConnection 物件相關聯的參考計數。每次呼叫 AddRef() 時,應用程式都會負責對 Release()、Close() 或 Abort() 呼叫。
關閉
WEAVE_ERROR Close( void )
這個外掛程式能執行以 TCP 或 BLE 為基礎的 WeaveConnection 傳送非阻塞式關閉安全關閉,並傳送所有剩餘的外寄資料,再友善通知遠端主機已重設連線。
這個方法無法保證遠端對等端收到任何未在應用程式通訊協定層級確認的外寄郵件。無論是 TCP 或 BLE,基礎通訊協定堆疊都會盡力在重設連線前傳送任何待處理的傳出資料。如果是 TCP,則應在 Close() 前使用 Shutdown(),確認關閉連線前必須確認傳輸層訊息收據。BLE 連線沒有提供對等的 Shutdown()。
如果是 BLE 連線,Close() 會關閉 WeaveConnection 並立即傳回,但可能會導致基礎 BLEEndPoint 物件延遲到所有傳出資料傳送為止。這是 Weave over BLE 傳輸通訊協定實作程序的副作用,目前位於 Weave BleLayer 內。
呼叫 Close() 後,WeaveConnection 物件就無法再用於進一步通訊,
呼叫 Close() 可減少與 WeaveConnection 物件相關聯的參考計數,無論在呼叫方法時是否處於開放/啟用狀態。如果參照計數等於零,系統就會釋出與連線物件相關聯的資源。在這種情況下,應用程式不得與物件進一步互動。
詳細說明 | |
---|---|
傳回 |
無條件提供 WEAVE_NO_ERROR。
|
Shutdown()、Abort()、AddRef() 和 Release()。
關閉
WEAVE_ERROR Close( bool suppressCloseLog )
這個外掛程式能執行以 TCP 或 BLE 為基礎的 WeaveConnection 傳送非阻塞式關閉安全關閉,並傳送所有剩餘的外寄資料,再友善通知遠端主機已重設連線。
這個方法無法保證遠端對等端收到任何未在應用程式通訊協定層級確認的外寄郵件。無論是 TCP 或 BLE,基礎通訊協定堆疊都會盡力在重設連線前傳送任何待處理的傳出資料。如果是 TCP,則應在 Close() 前使用 Shutdown(),確認關閉連線前必須確認傳輸層訊息收據。BLE 連線沒有提供對等的 Shutdown()。
如果是 BLE 連線,Close() 會關閉 WeaveConnection 並立即傳回,但可能會導致基礎 BLEEndPoint 物件延遲到所有傳出資料傳送為止。這是 Weave over BLE 傳輸通訊協定實作程序的副作用,目前位於 Weave BleLayer 內。
呼叫 Close() 後,WeaveConnection 物件就無法再用於進一步通訊,
呼叫 Close() 可減少與 WeaveConnection 物件相關聯的參考計數,無論在呼叫方法時是否處於開放/啟用狀態。如果參照計數等於零,系統就會釋出與連線物件相關聯的資源。在這種情況下,應用程式不得與物件進一步互動。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
無條件提供 WEAVE_NO_ERROR。
|
Shutdown()、Abort()、AddRef() 和 Release()。
連結
WEAVE_ERROR Connect( uint64_t peerNodeId )
使用衍生自指定節點 ID 的架構 IP 位址,連線至 Weave 節點。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
連結
WEAVE_ERROR Connect( uint64_t peerNodeId, const IPAddress & peerAddr, uint16_t peerPort )
使用節點 ID 和/或 IP 位址連線至 Weave 節點。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
連結
WEAVE_ERROR Connect( uint64_t peerNodeId, WeaveAuthMode authMode, const IPAddress & peerAddr, uint16_t peerPort, InterfaceId intf )
使用節點 ID 和/或特定介面的 IP 位址連線至 Weave 節點。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
連結
WEAVE_ERROR Connect( uint64_t peerNodeId, WeaveAuthMode authMode, const char *peerAddr, uint16_t defaultPort )
使用節點 ID 和/或字串主機名稱連線至 Weave 節點。
如有提供,peerAddr 可以是下列任一值:
: : [ ]:
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
連結
WEAVE_ERROR Connect( uint64_t peerNodeId, WeaveAuthMode authMode, const char *peerAddr, uint16_t peerAddrLen, uint16_t defaultPort )
使用節點 ID 和/或字串對等位址連線至 Weave 節點。
如有提供,peerAddr 可以是下列任一值:
: : [ ]:
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
連結
WEAVE_ERROR Connect( uint64_t peerNodeId, WeaveAuthMode authMode, const char *peerAddr, uint16_t peerAddrLen, uint8_t dnsOptions, uint16_t defaultPort )
使用節點 ID 和/或字串對等位址連線至 Weave 節點。
如有提供,peerAddr 可以是下列任一值:
: : [ ]:
詳細說明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||
傳回值 |
|
連結
WEAVE_ERROR Connect( uint64_t peerNodeId, WeaveAuthMode authMode, HostPortList hostPortList, InterfaceId intf )
使用節點 ID 和/或主機名稱和通訊埠清單連線至 Weave 節點。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
連結
WEAVE_ERROR Connect( uint64_t peerNodeId, WeaveAuthMode authMode, HostPortList hostPortList, uint8_t dnsOptions, InterfaceId intf )
使用節點 ID 和/或主機名稱和通訊埠清單連線至 Weave 節點。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
DisableKeepAlive
WEAVE_ERROR DisableKeepAlive( void )
WeaveConnection::DisableKeepAlive。
在基礎 TCP 連線上停用 TCP 保持運作探測。
注意:這個方法只能在由 TCP 連線支援的 Weave 連線上呼叫。只有在連線處於允許傳送的狀態時,才能呼叫此方法。
如果連線未啟用 Keepalives,這個方法就不會有任何作用。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
傳回值 |
|
DisableReceive
void DisableReceive( void )
停用透過這個 WeaveConnection 接收。
應用程式會使用這個方法表示它尚未準備好透過 TCP 連線接收任何抵達資料。為了重新啟用接收功能,應用程式必須呼叫 EnableReceive(),允許 WeaveConnection 以叫用適當的回呼的方式遞交任何已接收的資料。
另請參閱:EnableReceive()
EnableKeepAlive
WEAVE_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
WeaveConnection::EnableKeepAlive。
在基礎 TCP 連線上啟用 TCP 保持運作探測。
注意:-這個方法只能在由 TCP 連線支援的 Weave 連線上呼叫。-只有在連線處於允許傳送狀態時,才能呼叫此方法。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
-您可以多次呼叫這個方法,調整保持運作間隔或逾時計數。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
傳回值 |
|
EnableReceive
void EnableReceive( void )
啟用透過這個 WeaveConnection 接收。
應用程式會使用此方法向 WeaveConnection 物件指出其已準備好接收透過 TCP 連線傳送的任何資料。
另請參閱:DisableReceive()
GetPeerAddressInfo
WEAVE_ERROR GetPeerAddressInfo( IPPacketInfo & addrInfo )
取得對等端的 IP 位址資訊。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
GetPeerDescription
void GetPeerDescription( char *buf, size_t bufSize ) const
建構一個字串,說明與連線相關聯的對等節點。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
GetTCPEndPoint
TCPEndPoint * GetTCPEndPoint( void ) const
IsIncoming
bool IsIncoming( void ) const
LogId
uint16_t LogId( void ) const
發布
void Release( void )
將 WeaveConnection 物件上的參考計數減少。
Release() 方法會減少與 WeaveConnection 物件相關聯的參考計數。如果參照計數變成零,系統就會關閉連線並釋出連線物件。在這種情況下,應用程式不得與物件進一步互動。
ResetUserTimeout
WEAVE_ERROR ResetUserTimeout( void )
WeaveConnection::ResetUserTimeout。
將 TCP 使用者逾時通訊端選項重設為系統預設值。
注意:-這個方法只能在由 TCP 連線支援的 Weave 連線上呼叫。-只有在連線處於允許傳送狀態時,才能呼叫此方法。
-如果尚未在連線上設定使用者逾時,這個方法就不會執行任何動作。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
傳回值 |
|
SendMessage
WEAVE_ERROR SendMessage( WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
透過已連線的連線傳送 Weave 訊息。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
SendTunneledMessage
WEAVE_ERROR SendTunneledMessage( WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
透過 Weave 連線傳送通道封包的函式。
透過已建立的連線傳送具有通道的 Weave 訊息。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
SetConnectTimeout
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
設定連線逾時,以成功或傳回錯誤。
詳細說明 | |||
---|---|---|---|
參數 |
|
SetIdleTimeout
WEAVE_ERROR SetIdleTimeout( uint32_t timeoutMS )
設定基礎網路層連線的閒置逾時。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
SetIncoming
void SetIncoming( bool val )
SetUserTimeout
WEAVE_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
WeaveConnection::SetUserTimeout
設定 TCP 使用者逾時通訊端選項。
如果該值大於 0,則指定在 TCP 強制關閉對應的連線之前,傳輸的資料可能會保持未確認的時間上限 (以毫秒為單位)。如果選項值指定為 0,TCP 將使用系統預設值。詳情請參閱 RFC 5482。
詳細說明 | |||
---|---|---|---|
參數 |
|
注意:-這個方法只能在由 TCP 連線支援的 Weave 連線上呼叫。-只有在連線處於允許傳送狀態時,才能呼叫此方法。
-您可以多次呼叫這個方法,以調整 TCP 使用者逾時。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
傳回值 |
|
關機
WEAVE_ERROR Shutdown( void )
執行安全的 TCP 傳送關閉,確保所有傳出資料皆已由對等點的 TCP 堆疊傳送及接收。
就大部分 (但非全部) 的 TCP 實作而言,接收傳送關閉會造成遠端主機一併關閉連線端,導致連線關閉。後續對 Close() 的呼叫會終止 WeaveConnection。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
傳回值 |
|
Close() 和 Abort()。