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 連線物件的狀態。 |
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
[READ ONLY] 相關終點的網路類型。
|
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 連線物件的狀態。
屬性 | |
---|---|
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
[READ ONLY] 相關終點的網路類型。
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 BleLayer 內現有的 BLE 傳輸通訊協定實作 Weave 之副作用。
呼叫 Close() 後,WeaveConnection 物件就無法再用於進一步通訊。
呼叫 Close() 可減少與 WeaveConnection 物件相關聯的參考計數,無論呼叫這個方法時連線是否處於開放/啟用狀態。如果參照計數達到零,系統就會釋出與連線物件相關聯的資源。發生這種情況時,應用程式不得與物件進一步互動。
詳細資料 | |
---|---|
傳回 |
Shutdown()、Abort()、AddRef() 和 Release()。
關閉
WEAVE_ERROR Close( bool suppressCloseLog )
對基於 TCP 或 BLE 的 WeaveConnection 執行非阻塞式安全關閉,先傳送所有剩餘的外送資料,再通知遠端主機我們重設連線。
這個方法無法保證遠端對等點已接收未在應用程式通訊協定層級確認的任何外寄郵件。對於 TCP 和 BLE 而言,基礎通訊協定堆疊會盡可能在重設連線之前傳送任何待處理的外送資料。如果是 TCP,如果在關閉連線前需要確認傳輸層訊息收據,請在 Close() 前使用 Shutdown()。BLE 連線沒有提供對等的 Shutdown()。
如果是以 BLE 為基礎的連線,Close() 會關閉 WeaveConnection 並立即傳回,但可能會使基礎 BLEEndPoint 物件暫時保留到所有傳出資料為止。這是 Weave BleLayer 內現有的 BLE 傳輸通訊協定實作 Weave 之副作用。
呼叫 Close() 後,WeaveConnection 物件就無法再用於進一步通訊。
呼叫 Close() 可減少與 WeaveConnection 物件相關聯的參考計數,無論呼叫這個方法時連線是否處於開放/啟用狀態。如果參照計數達到零,系統就會釋出與連線物件相關聯的資源。發生這種情況時,應用程式不得與物件進一步互動。
詳細資料 | |||
---|---|---|---|
參數 |
|
||
傳回 |
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 連線上呼叫。 只有在連線處於允許傳送狀態時,才能呼叫這個方法。
如果連線未啟用 Keepalive,這個方法不會有任何作用。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
傳回值 |
|
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()。