nl:: Inet:: InetLayer
#include <src/inet/InetLayer.h>
這樣就能透過單一執行緒使用網際網路服務,包括計時器、網域名稱系統 (DNS) 解析、TCP 網路傳輸、UDP 網路傳輸,以及原始網路傳輸等。
摘要
如為 BSD/POSIX 通訊端,您可以透過檔案描述元以及平台調整的傳統輪詢 / 選取實作來處理事件完備性通知。
對於 LwIP,事件準備通知會透過事件 / 訊息,以及事件 / 訊息系統的平台與系統專用掛鉤來處理。
建構函式和解構函式 |
|
---|---|
InetLayer(void)
這是 InetLayer 預設建構函式。
|
公開類型 |
|
---|---|
@5{
|
列舉 InetLayer 物件的目前狀態。 |
DNSResolveCompleteFunct
|
typedefDNSResolver::OnResolveCompleteFunct
|
公開屬性 |
|
---|---|
State
|
enum nl::Inet::InetLayer::@5
InetLayer 物件的目前狀態。
|
公開的靜態屬性 |
|
---|---|
sInetEventHandlerDelegate
|
公開函式 |
|
---|---|
CanEnqueueDroppableEvent(void)
|
bool
|
CancelResolveHostAddress(DNSResolveCompleteFunct onComplete, void *appState)
|
void
取消任何仍在運作的未完成 DNS 查詢 (用於相符的完成回呼和應用程式狀態)。
|
DroppableEventDequeued(void)
|
void
|
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
|
取得指定 IP 位址的介面 ID。
|
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
|
取得特定連結或介面的連結本機 IPv6 位址。
|
GetPlatformData(void)
|
void *
此方法會傳回指派給執行個體的任何用戶端專屬平台資料 (如果先前已設定過)。
|
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
|
void
透過特定呼叫處理 I/O。
|
Init(Weave::System::Layer & aSystemLayer, void *aContext)
|
這是 InetLayer 的明確初始化器。
|
InitQueueLimiter(void)
|
|
MatchLocalIPv6Subnet(const IPAddress & addr)
|
bool
檢查指定的 IPv6 位址和任何本機設定的 IPv6 位址之間是否有前置字串。
|
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
|
針對特定 IP 版本和通訊協定建立新的 RawEndPoint 物件。
|
NewTCPEndPoint(TCPEndPoint **retEndPoint)
|
建立新的 TCPEndPoint 物件。
|
NewTunEndPoint(TunEndPoint **retEndPoint)
|
建立新的 TunEndPoint 物件。
|
NewUDPEndPoint(UDPEndPoint **retEndPoint)
|
建立新的 UDPEndPoint 物件。
|
PrepareSelect(int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime)
|
void
準備可供
select() 使用的檔案描述元集。 |
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
|
執行指定主機名稱的 IP 位址解析。
|
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
|
執行指定主機名稱的 IP 位址解析。
|
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
|
執行指定主機名稱的 IP 位址解析。
|
SetPlatformData(void *aPlatformData)
|
void
這會將指定的用戶端平台資料設為執行個體,以供用戶端平台稍後擷取。
|
Shutdown(void)
|
|
SystemLayer(void) const
|
公開的靜態函式 |
|
---|---|
HandleInetLayerEvent(Weave::System::Object & aTarget, Weave::System::EventType aEventType, uintptr_t aArgument)
|
Weave::System::Error
|
IsDroppableEvent(Weave::System::EventType aType)
|
bool
|
UpdateSnapshot(nl::Weave::System::Stats::Snapshot & aSnapshot)
|
void
|
公開類型
5 次
@5
InetLayer 物件的目前狀態。
屬性 | |
---|---|
kState_Initialized
|
初始化狀態。 |
kState_NotInitialized
|
未初始化狀態。 |
kState_ShutdownInProgress
|
觸發關閉作業的狀態。 |
DNSResolveCompleteFunct
DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct
公開屬性
公開的靜態屬性
sInetEventHandlerDelegate
Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate
公開函式
CanEnqueueDroppableEvent
bool CanEnqueueDroppableEvent( void )
CancelResolveHostAddress
void CancelResolveHostAddress( DNSResolveCompleteFunct onComplete, void *appState )
取消任何仍在運作的未完成 DNS 查詢 (用於相符的完成回呼和應用程式狀態)。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
DroppableEventDequeued
void DroppableEventDequeued( void )
GetInterfaceFromAddr
INET_ERROR GetInterfaceFromAddr( const IPAddress & addr, InterfaceId & intfId )
取得指定 IP 位址的介面 ID。
如果無法衍生介面 ID,則會設為 INET_NULL_INTERFACEID。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回 |
INET_NO_ERROR (沒有條件)。
|
GetLinkLocalAddr
INET_ERROR GetLinkLocalAddr( InterfaceId link, IPAddress *llAddr )
取得特定連結或介面的連結本機 IPv6 位址。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
GetPlatformData
void * GetPlatformData( void )
此方法會傳回指派給執行個體的任何用戶端專屬平台資料 (如果先前已設定過)。
詳細資料 | |
---|---|
傳回 |
用戶端專屬平台資料 (如果先前已設定);否則為 NULL。
|
HandleSelectResult
void HandleSelectResult( int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds )
透過特定呼叫處理 I/O。
這個方法會在每個有效端點中註冊待處理的 I/O 事件,然後針對這些端點叫用對應的 I/O 處理函式。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
InetLayer
InetLayer( void )
這是 InetLayer 預設建構函式。
會執行一些基本資料成員初始化作業;不過,由於 InetLayer 遵循明確的初始化器設計模式,因此您必須先成功呼叫 InetLayer::Init 方法,才能使用物件。
Init
INET_ERROR Init( Weave::System::Layer & aSystemLayer, void *aContext )
這是 InetLayer 的明確初始化器。
必須在使用 InetLayer 之前成功呼叫並完成。
呼叫端可提供選用的結構定義引數,這會透過任何平台專屬的 hook 函式傳回。對於以 LwIP 為基礎的調整,這通常會是一個指標,指向與 InetLayer 執行個體相關聯的事件佇列。
平台可以選擇在平台專屬設定標頭中聲明 INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS,並啟用 Platform::InetLayer::WillInit and Platform::InetLayer::DidInit 掛鉤,將平台專屬的自訂項目或資料擴充功能套用至 InetLayer。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
InitQueueLimiter
INET_ERROR InitQueueLimiter( void )
MatchLocalIPv6Subnet
bool MatchLocalIPv6Subnet( const IPAddress & addr )
檢查指定的 IPv6 位址和任何本機設定的 IPv6 位址之間是否有前置字串。
詳細資料 | |||
---|---|---|---|
參數 |
|
||
傳回 |
如果找到成功比對的結果為 true,否則傳回 false。
|
NewRawEndPoint
INET_ERROR NewRawEndPoint( IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint )
針對特定 IP 版本和通訊協定建立新的 RawEndPoint 物件。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
NewTCPEndPoint
INET_ERROR NewTCPEndPoint( TCPEndPoint **retEndPoint )
建立新的 TCPEndPoint 物件。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
NewTunEndPoint
INET_ERROR NewTunEndPoint( TunEndPoint **retEndPoint )
建立新的 TunEndPoint 物件。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
NewUDPEndPoint
INET_ERROR NewUDPEndPoint( UDPEndPoint **retEndPoint )
建立新的 UDPEndPoint 物件。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
PrepareSelect
void PrepareSelect( int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime )
準備可供 select()
使用的檔案描述元集。
詳細資料 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
ResolveHostAddress
INET_ERROR ResolveHostAddress( const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState )
執行指定主機名稱的 IP 位址解析。
詳細資料 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||||||
傳回值 |
|
ResolveHostAddress
INET_ERROR ResolveHostAddress( const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState )
執行指定主機名稱的 IP 位址解析。
詳細資料 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||||||
傳回值 |
|
ResolveHostAddress
INET_ERROR ResolveHostAddress( const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState )
執行指定主機名稱的 IP 位址解析。
詳細資料 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||||||
傳回值 |
|
SetPlatformData
void SetPlatformData( void *aPlatformData )
這會將指定的用戶端平台資料設為執行個體,以供用戶端平台稍後擷取。
詳細資料 | |||
---|---|---|---|
參數 |
|
關閉
INET_ERROR Shutdown( void )
這是 InetLayer 的明確解碼器,必須在處理具例項化的 InetLayer 執行個體之前呼叫。
平台可以選擇在平台專屬設定標頭中聲明 INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS,並啟用 Platform::InetLayer::WillShutdown 和 Platform::InetLayer::DidShutdown 掛鉤,以便清除平台專屬自訂項目或資料擴充功能到 InetLayer。
詳細資料 | |
---|---|
傳回 |
INET_NO_ERROR (成功)。否則會顯示特定錯誤,指出關閉失敗的原因。
|
SystemLayer
Weave::System::Layer * SystemLayer( void ) const
公開的靜態函式
HandleInetLayerEvent
Weave::System::Error HandleInetLayerEvent( Weave::System::Object & aTarget, Weave::System::EventType aEventType, uintptr_t aArgument )
IsDroppableEvent
bool IsDroppableEvent( Weave::System::EventType aType )