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 )
取消解析主機位址
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。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回 |
GetLinkLocalAddr
INET_ERROR GetLinkLocalAddr( InterfaceId link, IPAddress *llAddr )
取得指定連結或介面的連結本機 IPv6 位址。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
取得平台資料
void * GetPlatformData( void )
這會傳回任何指派給執行個體的用戶端專屬平台資料 (如果先前已設定)。
詳細資料 | |
---|---|
傳回 |
用戶端專屬平台資料 (如果先前已設定),否則為 NULL。
|
帳號選取結果
void HandleSelectResult( int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds )
處理選取呼叫的 I/O。
此方法會在每個有效端點註冊待處理的 I/O 事件,然後叫用這些端點的個別 I/O 處理函式。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
Init
INET_ERROR Init( Weave::System::Layer & aSystemLayer, void *aContext )
這是 InetLayer 明確初始化器。
您必須呼叫並順利完成,才能使用 InetLayer。
呼叫者可能會提供選用的內容引數,此引數可透過任何平台專用掛鉤函式傳回。對於以 LwIP 為基礎的調整,這通常是指向與 InetLayer 執行個體相關聯的事件佇列。
平台可能選擇在平台專用的設定標頭中聲明 INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS,並啟用 Platform::InetLayer::WillInit 和 Platform::InetLayer::doesInit 掛鉤來將平台專屬自訂項目或資料擴充功能套用至 InetLayer。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
InitQueueLimiter
INET_ERROR InitQueueLimiter( void )
配對本機 IPv6 子網路
bool MatchLocalIPv6Subnet( const IPAddress & addr )
檢查指定的 IPv6 位址與任何已設定的 IPv6 位址之間是否具有前置字串比對。
詳細資料 | |||
---|---|---|---|
參數 |
|
||
傳回 |
如果找到成功相符項目,則傳回 true,否則為 false。
|
NewRawEndPoint
INET_ERROR NewRawEndPoint( IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint )
為特定 IP 版本和通訊協定建立新的 RawEndPoint 物件。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
新 TCPEndPoint
INET_ERROR NewTCPEndPoint( TCPEndPoint **retEndPoint )
建立新的 TCPEndPoint 物件。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
NewTunEndPoint
INET_ERROR NewTunEndPoint( TunEndPoint **retEndPoint )
建立新的 TunEndPoint 物件。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
新 UDPEndPoint
INET_ERROR NewUDPEndPoint( UDPEndPoint **retEndPoint )
建立新的 UDPEndPoint 物件。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
準備選取
void PrepareSelect( int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime )
準備一組檔案描述元,讓 select()
能使用。
詳細資料 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
解析主機位址
INET_ERROR ResolveHostAddress( const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState )
執行指定主機名稱的 IP 位址解析。
詳細資料 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||||||
傳回值 |
|
解析主機位址
INET_ERROR ResolveHostAddress( const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState )
執行指定主機名稱的 IP 位址解析。
詳細資料 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||||||
傳回值 |
|
解析主機位址
INET_ERROR ResolveHostAddress( const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState )
執行指定主機名稱的 IP 位址解析。
詳細資料 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||||||
傳回值 |
|
設定平台資料
void SetPlatformData( void *aPlatformData )
這會將指定的用戶端專屬平台資料設為執行個體,以供日後平台擷取。
詳細資料 | |||
---|---|---|---|
參數 |
|
停用
INET_ERROR Shutdown( void )
這是 InetLayer 的明確初始化初始化工具,應該在配置執行個體化的 InetLayer 執行個體之前呼叫。
詳細資料 | |
---|---|
傳回 |
INET_NO_ERROR (成功即可);否則,特定錯誤會指出關機失敗的原因。
|
系統圖層
Weave::System::Layer * SystemLayer( void ) const
公開的靜態函式
元素的處理點事件
Weave::System::Error HandleInetLayerEvent( Weave::System::Object & aTarget, Weave::System::EventType aEventType, uintptr_t aArgument )
可拖曳事件
bool IsDroppableEvent( Weave::System::EventType aType )