nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

Isso fornece acesso a serviços da Internet, incluindo timers, resolução de Sistema de Nomes de Domínio (DNS), transporte de rede TCP, transporte de rede UDP e transporte de rede bruta, para um único thread.

Resumo

Para soquetes BSD/POSIX, a notificação de prontidão de eventos é tratada por descritores de arquivo e uma implementação tradicional de pesquisa / seleção na adaptação da plataforma.

Para LwIP, a notificação de prontidão do evento é processada por eventos / mensagens e ganchos específicos da plataforma e do sistema para o sistema de eventos / mensagens.

Construtores e destruidores

InetLayer(void)
Esse é o construtor padrão InetLayer.

Tipos públicos

@5{
  kState_NotInitialized = 0,
  kState_Initialized = 1,
  kState_ShutdownInProgress = 2
}
enum
O estado atual do objeto InetLayer.
DNSResolveCompleteFunct typedef
DNSResolver::OnResolveCompleteFunct

Atributos públicos

State
enum nl::Inet::InetLayer::@5
O estado atual do objeto InetLayer.

Atributos estáticos públicos

sInetEventHandlerDelegate

Funções públicas

CanEnqueueDroppableEvent(void)
bool
CancelResolveHostAddress(DNSResolveCompleteFunct onComplete, void *appState)
void
Cancele qualquer consulta DNS pendente (para um callback de conclusão e estado do aplicativo correspondentes) que ainda esteja ativa.
DroppableEventDequeued(void)
void
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
Consiga o identificador de interface do endereço IP especificado.
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
Encontre o endereço IPv6 de link-local para um link ou interface especificado.
GetPlatformData(void)
void *
Isso retorna todos os dados da plataforma específicos do cliente atribuídos à instância, se eles tiverem sido definidos anteriormente.
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
void
Processar E/S de uma chamada selecionada.
Init(Weave::System::Layer & aSystemLayer, void *aContext)
Esse é o inicializador explícito de InetLayer.
InitQueueLimiter(void)
MatchLocalIPv6Subnet(const IPAddress & addr)
bool
Verifique se há uma correspondência de prefixo entre o endereço IPv6 especificado e qualquer um dos endereços IPv6 configurados localmente.
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
Cria um novo objeto RawEndPoint para uma versão de IP e protocolo específicos.
NewTCPEndPoint(TCPEndPoint **retEndPoint)
Cria um novo objeto TCPEndPoint.
NewTunEndPoint(TunEndPoint **retEndPoint)
Cria um novo objeto TunEndPoint.
NewUDPEndPoint(UDPEndPoint **retEndPoint)
Cria um novo objeto UDPEndPoint.
PrepareSelect(int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime)
void
Prepare os conjuntos de descritores de arquivo para o select() trabalhar.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Executa uma resolução de endereço IP para um nome de host especificado.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Executa uma resolução de endereço IP para um nome de host especificado.
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Executa uma resolução de endereço IP para um nome de host especificado.
SetPlatformData(void *aPlatformData)
void
Isso define os dados especificados da plataforma específicos do cliente para a instância, para recuperação posterior pela plataforma do cliente.
Shutdown(void)
Esse é o desinicializador explícito InetLayer que precisa ser chamado antes do descarte de uma instância InetLayer instanciada.
SystemLayer(void) const

Funções estáticas públicas

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

Tipos públicos

@5

 @5

O estado atual do objeto InetLayer.

Propriedades
kState_Initialized

Estado inicializado.

kState_NotInitialized

Estado não inicializado.

kState_ShutdownInProgress

Estado em que o encerramento foi acionado.

DNSResolveCompleteFunct

DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct

Atributos públicos

Estado

enum nl::Inet::InetLayer::@5 State

O estado atual do objeto InetLayer.

[SOMENTE LEITURA] Estado atual.

Atributos estáticos públicos

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

Funções públicas

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

CancelResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Cancele qualquer consulta DNS pendente (para um callback de conclusão e estado do aplicativo correspondentes) que ainda esteja ativa.

Detalhes
Parâmetros
[in] onComplete
Um ponteiro para a função de callback quando uma solicitação de DNS é concluída.
[in] appState
Um ponteiro para um objeto de estado do aplicativo a ser passado para a função de callback como argumento.

DroppableEventDequeued

void DroppableEventDequeued(
  void
)

GetInterfaceFromAddr

INET_ERROR GetInterfaceFromAddr(
  const IPAddress & addr,
  InterfaceId & intfId
)

Consiga o identificador de interface do endereço IP especificado.

Se não for possível derivar o identificador da interface, ele será definido como INET_NULL_INTERFACEID.

Detalhes
Parâmetros
[in] addr
Uma referência ao objeto IPAddress.
[out] intfId
Uma referência ao objeto InterfaceId.
Retornos
INET_NO_ERROR incondicionalmente.

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Encontre o endereço IPv6 de link-local para um link ou interface especificado.

Detalhes
Parâmetros
[in] link
A interface para a qual o endereço IPv6 do link local está sendo buscado.
[out] llAddr
O endereço IPv6 do link local para o link.
Valores de retorno
INET_ERROR_NOT_IMPLEMENTED
Se IPv6 não for compatível.
INET_ERROR_BAD_ARGS
Se o endereço local do link for NULL.
INET_ERROR_ADDRESS_NOT_FOUND
Se o link não tiver nenhum endereço configurado.
INET_NO_ERROR
Se a operação for bem-sucedida.

GetPlatformData

void * GetPlatformData(
  void
)

Isso retorna todos os dados da plataforma específicos do cliente atribuídos à instância, se eles tiverem sido definidos anteriormente.

Detalhes
Retornos
dados de plataformas específicos do cliente, se tiverem sido definidos anteriormente; caso contrário, NULL.

HandleSelectResult

void HandleSelectResult(
  int selectRes,
  fd_set *readfds,
  fd_set *writefds,
  fd_set *exceptfds
)

Processar E/S de uma chamada selecionada.

Esse método registra o evento de E/S pendente em cada endpoint ativo e, em seguida, invoca as respectivas funções de tratamento de E/S para esses endpoints.

Detalhes
Parâmetros
[in] selectRes
O valor de retorno da chamada de seleção.
[in] readfds
Um ponteiro para o conjunto de descritores do arquivo de leitura.
[in] writefds
Um ponteiro para o conjunto de descritores do arquivo de gravação.
[in] exceptfds
Um ponteiro para o conjunto de descritores de arquivo com erros.

InetLayer

 InetLayer(
  void
)

Esse é o construtor padrão InetLayer.

Ele executa algumas inicializações básicas do membro de dados, No entanto, como InetLayer segue um padrão explícito de design de inicializador, o método InetLayer::Init precisa ser chamado antes de usar o objeto.

Init

INET_ERROR Init(
  Weave::System::Layer & aSystemLayer,
  void *aContext
)

Esse é o inicializador explícito de InetLayer.

Isso precisa ser chamado e concluído antes que a InetLayer possa ser usada.

O autor da chamada pode fornecer um argumento de contexto opcional que será retornado por qualquer função de gancho específica da plataforma. Para adaptações baseadas em LwIP, isso normalmente será um ponteiro para a fila de eventos associada à instância InetLayer.

As plataformas podem declarar os ganchos INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS no cabeçalho de configuração específico da plataforma e ativar os ganchos Platform::InetLayer::WillInit e Platform::InetLayer::DidInit para fazer personalizações específicas da plataforma ou extensões de dados para InetLayer.

Detalhes
Parâmetros
[in] aSystemLayer
Uma instância obrigatória da camada do sistema do Weave já foi inicializada.
[in] aContext
Um argumento de contexto opcional que será retornado ao autor da chamada por meio de qualquer função de gancho específica da plataforma.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se a InetLayer estiver em um estado incorreto.
INET_ERROR_NO_MEMORY
Se a InetLayer ficar sem recurso para essa solicitação para um novo timer.
other
Erros específicos da plataforma que indicam o motivo da falha na inicialização.
INET_NO_ERROR
Se a operação for bem-sucedida.

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6Subnet

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

Verifique se há uma correspondência de prefixo entre o endereço IPv6 especificado e qualquer um dos endereços IPv6 configurados localmente.

Detalhes
Parâmetros
[in] addr
O endereço IPv6 para verificar a correspondência de prefixo.
Retornos
verdadeiro se uma correspondência bem-sucedida for encontrada; caso contrário, falso.

NewRawEndPoint

INET_ERROR NewRawEndPoint(
  IPVersion ipVer,
  IPProtocol ipProto,
  RawEndPoint **retEndPoint
)

Cria um novo objeto RawEndPoint para uma versão de IP e protocolo específicos.

Detalhes
Parâmetros
[in] ipVer
IPv4 ou IPv6.
[in] ipProto
Um protocolo dentro da família de IPs (por exemplo, ICMPv4 ou ICMPv6).
[in,out] retEndPoint
Um ponteiro para o objeto RawEndPoint que é um parâmetro de retorno após a conclusão da criação do objeto. *retEndPoint será NULL se a criação falhar.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o objeto InetLayer não tiver sido inicializado.
INET_ERROR_NO_ENDPOINTS
Se o pool InetLayerRawEndPoint estiver cheio e nenhum endpoint novo puder ser criado.
INET_NO_ERROR
Se a operação for bem-sucedida.

NewTCPEndPoint

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

Cria um novo objeto TCPEndPoint.

Detalhes
Parâmetros
[in,out] retEndPoint
Um ponteiro para o objeto TCPEndPoint que é um parâmetro de retorno na conclusão da criação do objeto. *retEndPoint será NULL se a criação falhar.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o objeto InetLayer não tiver sido inicializado.
INET_ERROR_NO_ENDPOINTS
Se o pool InetLayerTCPEndPoint estiver cheio e nenhum endpoint novo puder ser criado.
INET_NO_ERROR
Se a operação for bem-sucedida.

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

Cria um novo objeto TunEndPoint.

Detalhes
Parâmetros
[in,out] retEndPoint
Um ponteiro para o objeto TunEndPoint que é um parâmetro de retorno após a conclusão da criação do objeto. *retEndPoint será NULL se a criação falhar.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o objeto InetLayer não tiver sido inicializado.
INET_ERROR_NO_ENDPOINTS
Se o pool InetLayerTunEndPoint estiver cheio e nenhum novo puder ser criado.
INET_NO_ERROR
Se a operação for bem-sucedida.

NewUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

Cria um novo objeto UDPEndPoint.

Detalhes
Parâmetros
[in,out] retEndPoint
Um ponteiro para o objeto UDPEndPoint que é um parâmetro de retorno após a conclusão da criação do objeto. *retEndPoint será NULL se a criação falhar.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o objeto InetLayer não tiver sido inicializado.
INET_ERROR_NO_ENDPOINTS
Se o pool InetLayerUDPEndPoint estiver cheio e nenhum endpoint novo puder ser criado.
INET_NO_ERROR
Se a operação for bem-sucedida.

PrepareSelect

void PrepareSelect(
  int & nfds,
  fd_set *readfds,
  fd_set *writefds,
  fd_set *exceptfds,
  struct timeval & sleepTime
)

Prepare os conjuntos de descritores de arquivo para o select() trabalhar.

Detalhes
Parâmetros
[out] nfds
O intervalo dos descritores de arquivo no conjunto de descritores de arquivo.
[in] readfds
Um ponteiro para o conjunto de descritores de arquivo legíveis.
[in] writefds
Um ponteiro para o conjunto de descritores de arquivos graváveis.
[in] exceptfds
Um ponteiro para o conjunto de descritores de arquivo com erros.
[in] sleepTimeTV
Um ponteiro para uma estrutura que especifica por quanto tempo o seletor deve permanecer suspenso.

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint16_t hostNameLen,
  uint8_t options,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Executa uma resolução de endereço IP para um nome de host especificado.

Detalhes
Parâmetros
[in] hostName
Um ponteiro para uma string C não terminada em NULL que representa o nome do host a ser consultado.
[in] hostNameLen
O comprimento da string do nome do host.
[in] options
Um valor inteiro que controla como a resolução de nomes do host é realizada.
                    Value should be one of the address family values from the
                    #DNSOptions enumeration:

                    #kDNSOption_AddrFamily_Any
                    #kDNSOption_AddrFamily_IPv4Only
                    #kDNSOption_AddrFamily_IPv6Only
                    #kDNSOption_AddrFamily_IPv4Preferred
                    #kDNSOption_AddrFamily_IPv6Preferred
[in] maxAddrs
O número máximo de endereços a serem armazenados na tabela de DNS.
[in] addrArray
Um ponteiro para a tabela de DNS.
[in] onComplete
Um ponteiro para a função de callback quando uma solicitação de DNS é concluída.
[in] appState
Um ponteiro para o estado do aplicativo a ser passado para onComplete quando uma solicitação de DNS for concluída.
Valores de retorno
INET_NO_ERROR
se uma solicitação DNS for processada corretamente.
INET_ERROR_NO_MEMORY
se o pool do resolvedor da camada Inet estiver cheio.
INET_ERROR_HOST_NAME_TOO_LONG
se um nome de host solicitado for muito longo.
INET_ERROR_HOST_NOT_FOUND
se um nome de host de solicitação não puder ser resolvido em um endereço.
INET_ERROR_DNS_TRY_AGAIN
se um servidor de nomes retornou uma indicação de falha temporária; tente de novo mais tarde.
INET_ERROR_DNS_NO_RECOVERY
se um servidor de nomes retornou um erro irrecuperável.
INET_ERROR_NOT_IMPLEMENTED
se a resolução de DNS não estiver ativada na plataforma.
other
Erro de rede ou SO POSIX retornado pela implementação do resolvedor de DNS subjacente.

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint16_t hostNameLen,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Executa uma resolução de endereço IP para um nome de host especificado.

Detalhes
Parâmetros
[in] hostName
Um ponteiro para uma string C não terminada em NULL que representa o nome do host a ser consultado.
[in] hostNameLen
O comprimento da string do nome do host.
[in] maxAddrs
O número máximo de endereços a serem armazenados na tabela de DNS.
[in] addrArray
Um ponteiro para a tabela de DNS.
[in] onComplete
Um ponteiro para a função de callback quando uma solicitação de DNS é concluída.
[in] appState
Um ponteiro para o estado do aplicativo a ser passado para onComplete quando uma solicitação de DNS for concluída.
Valores de retorno
INET_NO_ERROR
se uma solicitação DNS for processada corretamente.
INET_ERROR_NO_MEMORY
se o pool do resolvedor da camada Inet estiver cheio.
INET_ERROR_HOST_NAME_TOO_LONG
se um nome de host solicitado for muito longo.
INET_ERROR_HOST_NOT_FOUND
se um nome de host de solicitação não puder ser resolvido em um endereço.
INET_ERROR_DNS_TRY_AGAIN
se um servidor de nomes retornou uma indicação de falha temporária; tente de novo mais tarde.
INET_ERROR_DNS_NO_RECOVERY
se um servidor de nomes retornou um erro irrecuperável.
INET_ERROR_NOT_IMPLEMENTED
se a resolução de DNS não estiver ativada na plataforma.
other
Erro de rede ou SO POSIX retornado pela implementação do resolvedor de DNS subjacente.

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Executa uma resolução de endereço IP para um nome de host especificado.

Detalhes
Parâmetros
[in] hostName
Um ponteiro para uma string C terminada em NULL que representa o nome do host a ser consultado.
[in] maxAddrs
O número máximo de endereços a serem armazenados na tabela de DNS.
[in] addrArray
Um ponteiro para a tabela de DNS.
[in] onComplete
Um ponteiro para a função de callback quando uma solicitação de DNS é concluída.
[in] appState
Um ponteiro para o estado do aplicativo a ser passado para onComplete quando uma solicitação de DNS for concluída.
Valores de retorno
INET_NO_ERROR
se uma solicitação DNS for processada corretamente.
INET_ERROR_NO_MEMORY
se o pool do resolvedor da camada Inet estiver cheio.
INET_ERROR_HOST_NAME_TOO_LONG
se um nome de host solicitado for muito longo.
INET_ERROR_HOST_NOT_FOUND
se um nome de host de solicitação não puder ser resolvido em um endereço.
INET_ERROR_DNS_TRY_AGAIN
se um servidor de nomes retornou uma indicação de falha temporária; tente de novo mais tarde.
INET_ERROR_DNS_NO_RECOVERY
se um servidor de nomes retornou um erro irrecuperável.
INET_ERROR_NOT_IMPLEMENTED
se a resolução de DNS não estiver ativada na plataforma.
other
Erro de rede ou SO POSIX retornado pela implementação do resolvedor de DNS subjacente.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

Isso define os dados especificados da plataforma específicos do cliente para a instância, para recuperação posterior pela plataforma do cliente.

Detalhes
Parâmetros
[in] aPlatformData
Os dados da plataforma específica do cliente a serem definidos.

Encerramento

INET_ERROR Shutdown(
  void
)

Esse é o desinicializador explícito InetLayer que precisa ser chamado antes do descarte de uma instância InetLayer instanciada.

As plataformas podem optar por declarar os ganchos INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS no cabeçalho de configuração específico da plataforma e ativar os ganchos Platform::InetLayer::WillShutdown e Platform::InetLayer::DidShutdown para efetuar a limpeza de personalizações específicas da plataforma ou extensões de dados para InetLayer.

Detalhes
Retornos
INET_NO_ERROR em caso de sucesso; caso contrário, um erro específico indicando o motivo da falha no encerramento.

SystemLayer

Weave::System::Layer * SystemLayer(
  void
) const 

Funções estáticas públicas

HandleInetLayerEvent

Weave::System::Error HandleInetLayerEvent(
  Weave::System::Object & aTarget,
  Weave::System::EventType aEventType,
  uintptr_t aArgument
)

IsDroppableEvent

bool IsDroppableEvent(
  Weave::System::EventType aType
)

UpdateSnapshot

void UpdateSnapshot(
  nl::Weave::System::Stats::Snapshot & aSnapshot
)