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 地址的接口标识符。
|
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 地址的接口标识符。
如果无法派生接口标识符,则将其设置为 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。
调用方可能会提供一个可选的上下文参数,该参数将通过任何针对具体平台的钩子函数传回。对于基于 LwIP 的适配,这通常是指向与 InetLayer 实例关联的事件队列的指针。
平台可以选择在其针对具体平台的配置标头中断言 INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS,并启用 Platform::InetLayer::WillInit 和 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 )