O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

nl::Inet:InetLayer

#include <src/inet/InetLayer.h>

Isso fornece acesso a serviços da Internet, incluindo timers, resolução de Sistema de Nome de Domínio (DNS), transporte de rede TCP, transporte de rede UDP e transporte de rede bruto, para uma única linha de execução.

Resumo

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

Para LwIP, a notificação de prontidão de evento é processada por eventos / mensagens e hooks 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
}
tipo enumerado
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 retorno de chamada de conclusão e estado do aplicativo correspondente) que ainda possa estar ativa.
DroppableEventDequeued(void)
void
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
Encontre o identificador de interface do endereço IP especificado.
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
Encontre o endereço IPv6 local do link para uma interface ou um link 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
Processe E/S de uma chamada selecionada.
Init(Weave::System::Layer & aSystemLayer, void *aContext)
Esse é o inicializador explícito 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 e um protocolo específicos do IP.
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 arquivos para o select() funcionar.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Execute uma resolução de endereço IP de um nome de host especificado.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Execute uma resolução de endereço IP de um nome de host especificado.
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Execute uma resolução de endereço IP de um nome de host especificado.
SetPlatformData(void *aPlatformData)
void
Isso define os dados especificados da plataforma específica do cliente para a instância, que poderão ser recuperados posteriormente pela plataforma do cliente.
Shutdown(void)
Esse é o desinicializador explícito InetLayer e 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
)

CancelarResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Cancele qualquer consulta DNS pendente (para um retorno de chamada de conclusão e estado do aplicativo correspondente) que ainda possa estar ativa.

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

DroppableEventDequeued

void DroppableEventDequeued(
  void
)

GetInterfaceFromAddr

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

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

Se não for possível derivar o identificador de 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.
Retorna
INET_NO_ERROR incondicionalmente.

GetLinkLocalAddr.

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Encontre o endereço IPv6 local do link para uma interface ou um link especificado.

Detalhes
Parâmetros
[in] link
A interface para a qual o endereço IPv6 local do link está sendo buscado.
[out] llAddr
O endereço IPv6 local do 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
Em caso de sucesso.

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
Retorna
Dados da plataforma específica do cliente, se tiverem sido definidos anteriormente. Caso contrário, serão NULL.

HandleSelectResult.

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

Processe E/S de uma chamada selecionada.

Esse método registra o evento pendente de E/S em cada endpoint ativo e invoca as respectivas funções de processamento 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 de arquivo de leitura.
[in] writefds
Um ponteiro para o conjunto de descritores de arquivo de gravação.
[in] exceptfds
Um ponteiro para o conjunto de descritores de arquivo com erros.

Camada Inet

 InetLayer(
  void
)

Esse é o construtor padrão InetLayer.

Ele realiza alguma inicialização básica de membro de dados. No entanto, como a InetLayer segue um padrão explícito de design de inicializador, o método InetLayer::Init precisa ser chamado com sucesso antes de usar o objeto.

Init

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

Esse é o inicializador explícito InetLayer.

Ela precisa ser chamada e concluída 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 hook 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 INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS no cabeçalho de configuração específico da plataforma e ativar os hooks de Platform::InetLayer::WillInit e Platform::InetLayer::DoesInit para modificar 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 Weave já foi inicializada.
[in] aContext
Um argumento de contexto opcional que será transmitido de volta para o autor da chamada por qualquer função de hook específica da plataforma.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o estado de InetLayer estiver incorreto.
INET_ERROR_NO_MEMORY
Se a InetLayer ficar sem recursos para a solicitação de um novo timer,
other
Erros específicos da plataforma que indicam o motivo da falha de inicialização.
INET_NO_ERROR
Em caso de sucesso.

InitQueueLimiter.

INET_ERROR InitQueueLimiter(
  void
)

Correspondência localIPv6

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.
Retorna
"true" se uma correspondência bem-sucedida for encontrada. Caso contrário, será "false".

NewRawEndPoint (em inglês)

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

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

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 um objeto RawEndPoint que é um parâmetro de retorno após a criação do objeto. *retEndPoint será NULL em caso de falha na criação.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o objeto InetLayer não for inicializado.
INET_ERROR_NO_ENDPOINTS
Se o pool InetLayerRawEndPoint estiver cheio e nenhum endpoint novo puder ser criado.
INET_NO_ERROR
Em caso de sucesso.

NewPointEndPoint

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

Cria um novo objeto TCPEndPoint.

Detalhes
Parâmetros
[in,out] retEndPoint
Um ponteiro para um ponteiro do objeto TCPEndPoint que é um parâmetro de retorno após a criação do objeto. *retEndPoint será NULL em caso de falha na criação.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o objeto InetLayer não for inicializado.
INET_ERROR_NO_ENDPOINTS
Se o pool InetLayerTCPEndPoint estiver cheio e nenhum endpoint novo puder ser criado.
INET_NO_ERROR
Em caso de sucesso.

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

Cria um novo objeto TunEndPoint.

Detalhes
Parâmetros
[in,out] retEndPoint
Um ponteiro para um objeto TunEndPoint que é um parâmetro de retorno após a criação do objeto. *retEndPoint será NULL em caso de falha na criação.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o objeto InetLayer não for inicializado.
INET_ERROR_NO_ENDPOINTS
Se o pool InetLayerTunEndPoint estiver cheio e nenhum novo puder ser criado.
INET_NO_ERROR
Em caso de sucesso.

NewPointEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

Cria um novo objeto UDPEndPoint.

Detalhes
Parâmetros
[in,out] retEndPoint
Um ponteiro para um ponteiro do objeto UDPEndPoint que é um parâmetro de retorno após a criação do objeto. *retEndPoint será NULL em caso de falha na criação.
Valores de retorno
INET_ERROR_INCORRECT_STATE
Se o objeto InetLayer não for inicializado.
INET_ERROR_NO_ENDPOINTS
Se o pool InetLayerUDPEndPoint estiver cheio e nenhum endpoint novo puder ser criado.
INET_NO_ERROR
Em caso de sucesso.

PrepareSelect

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

Prepare os conjuntos de descritores de arquivos para o select() funcionar.

Detalhes
Parâmetros
[out] nfds
O intervalo de descritores de arquivo no conjunto de descritor de arquivo.
[in] readfds
Um ponteiro para o conjunto de descritores de arquivos legíveis.
[in] writefds
Um ponteiro para o conjunto de descritores de arquivo graváveis.
[in] exceptfds
Um ponteiro para o conjunto de descritores de arquivo com erros.
[in] sleepTimeTV
Um ponteiro para uma estrutura que especifica quanto tempo a seleção vai dormir

ResolveHostAddress

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

Execute uma resolução de endereço IP de 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 a execução da resolução de nomes de host.
                    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
Número máximo de endereços a serem armazenados na tabela DNS.
[in] addrArray
Um ponteiro para a tabela DNS.
[in] onComplete
Um ponteiro para a função de callback quando uma solicitação DNS é concluída.
[in] appState
Um ponteiro para o estado do aplicativo a ser passado para onComplete quando uma solicitação DNS for concluída.
Valores de retorno
INET_NO_ERROR
se uma solicitação DNS for processada com êxito.
INET_ERROR_NO_MEMORY
se o pool de resolvedores de camadas do Inet estiver cheio.
INET_ERROR_HOST_NAME_TOO_LONG
se um nome de host solicitado for muito longo.
INET_ERROR_HOST_NOT_FOUND
se não foi possível resolver o nome de um host da solicitação para um endereço.
INET_ERROR_DNS_TRY_AGAIN
se um servidor de nomes retornou uma indicação de falha temporária, tente novamente 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 subjacente.
other
Erro de SO ou de rede POSIX retornado pela implementação subjacente do resolvedor de DNS.

ResolveHostAddress

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

Execute uma resolução de endereço IP de 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
Número máximo de endereços a serem armazenados na tabela DNS.
[in] addrArray
Um ponteiro para a tabela DNS.
[in] onComplete
Um ponteiro para a função de callback quando uma solicitação DNS é concluída.
[in] appState
Um ponteiro para o estado do aplicativo a ser passado para onComplete quando uma solicitação DNS for concluída.
Valores de retorno
INET_NO_ERROR
se uma solicitação DNS for processada com êxito.
INET_ERROR_NO_MEMORY
se o pool de resolvedores de camadas do Inet estiver cheio.
INET_ERROR_HOST_NAME_TOO_LONG
se um nome de host solicitado for muito longo.
INET_ERROR_HOST_NOT_FOUND
se não foi possível resolver o nome de um host da solicitação para um endereço.
INET_ERROR_DNS_TRY_AGAIN
se um servidor de nomes retornou uma indicação de falha temporária, tente novamente 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 subjacente.
other
Erro de SO ou de rede POSIX retornado pela implementação subjacente do resolvedor de DNS.

ResolveHostAddress

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

Execute uma resolução de endereço IP de 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
Número máximo de endereços a serem armazenados na tabela DNS.
[in] addrArray
Um ponteiro para a tabela DNS.
[in] onComplete
Um ponteiro para a função de callback quando uma solicitação DNS é concluída.
[in] appState
Um ponteiro para o estado do aplicativo a ser passado para onComplete quando uma solicitação DNS for concluída.
Valores de retorno
INET_NO_ERROR
se uma solicitação DNS for processada com êxito.
INET_ERROR_NO_MEMORY
se o pool de resolvedores de camadas do Inet estiver cheio.
INET_ERROR_HOST_NAME_TOO_LONG
se um nome de host solicitado for muito longo.
INET_ERROR_HOST_NOT_FOUND
se não foi possível resolver o nome de um host da solicitação para um endereço.
INET_ERROR_DNS_TRY_AGAIN
se um servidor de nomes retornou uma indicação de falha temporária, tente novamente 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 subjacente.
other
Erro de SO ou de rede POSIX retornado pela implementação subjacente do resolvedor de DNS.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

Isso define os dados especificados da plataforma específica do cliente para a instância, que poderão ser recuperados posteriormente 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 e precisa ser chamado antes do descarte de uma instância InetLayer instanciada.

As plataformas podem declarar INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS no cabeçalho de configuração específico da plataforma e ativar os hooks de Platform::InetLayer::WillShutdown e Platform::InetLayer::DidShutdown para limpar as personalizações específicas da plataforma ou as extensões de dados para InetLayer.

Detalhes
Retorna
INET_NO_ERROR em caso de sucesso. Caso contrário, um erro específico que indica o motivo da falha de encerramento.

Camada de sistema

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
)

Atualizar snapshot

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