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
处理来自 select 调用的 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。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
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 )
处理来自 select 调用的 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 )