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 )
取消主机地址
void CancelResolveHostAddress( DNSResolveCompleteFunct onComplete, void *appState )
取消可能仍处于活跃状态的所有待处理的 DNS 查询(针对匹配的完成回调函数和应用状态)。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
将 DroppableEvent 移出队列
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 )
处理选定调用中的 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 and Platform::InetLayer::DidInit 钩子,以影响平台特定的自定义或对 InetLayer 的数据扩展。
详细信息 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||
返回值 |
|
InitQueueLimiter
INET_ERROR InitQueueLimiter( void )
MatchLocalIPv6 子网
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 对象。
详细信息 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
NewUDPEndPoint
INET_ERROR NewUDPEndPoint( UDPEndPoint **retEndPoint )
创建一个新的 UDPEndPoint 对象。
详细信息 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
准备选择
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 地址解析。
详细信息 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||||||||
返回值 |
|
设置平台数据
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;否则,显示指明关闭失败的原因的特定错误。
|
系统层
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 )