nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

Ciò consente di accedere a servizi internet, tra cui timer, risoluzione DNS (Domain Name System), trasporto di rete TCP, trasporto di rete UDP e trasporto di rete non elaborato, per un singolo thread.

Riepilogo

Per i socket BSD/POSIX, la notifica di idoneità degli eventi viene gestita tramite descrittori di file e un'implementazione poll / select tradizionale sull'adattamento della piattaforma.

Per LwIP, la notifica di idoneità degli eventi viene gestita tramite eventi / messaggi e hook specifici della piattaforma e del sistema per il sistema di eventi / messaggi.

Costruttori e distruttori

InetLayer(void)
Questo è il costruttore predefinito di InetLayer.

Tipi pubblici

@5{
  kState_NotInitialized = 0,
  kState_Initialized = 1,
  kState_ShutdownInProgress = 2
}
enum
Lo stato attuale dell'oggetto InetLayer.
DNSResolveCompleteFunct typedef
DNSResolver::OnResolveCompleteFunct

Attributi pubblici

State
enum nl::Inet::InetLayer::@5
Lo stato attuale dell'oggetto InetLayer.

Attributi statici pubblici

sInetEventHandlerDelegate

Funzioni pubbliche

CanEnqueueDroppableEvent(void)
bool
CancelResolveHostAddress(DNSResolveCompleteFunct onComplete, void *appState)
void
Annulla qualsiasi query DNS in sospeso (per un callback di completamento corrispondente e lo stato dell'applicazione) che potrebbe essere ancora attiva.
DroppableEventDequeued(void)
void
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
Recupera l'identificatore di interfaccia per l'indirizzo IP specificato.
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
Recupera l'indirizzo IPv6 locale del collegamento per un collegamento o un'interfaccia specificati.
GetPlatformData(void)
void *
Questa operazione restituisce tutti i dati della piattaforma specifici del client assegnati all'istanza, se sono stati impostati in precedenza.
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
void
Gestire l'I/O di una chiamata selezionata.
Init(Weave::System::Layer & aSystemLayer, void *aContext)
Questo è l'inizializzatore esplicito di InetLayer.
InitQueueLimiter(void)
MatchLocalIPv6Subnet(const IPAddress & addr)
bool
Controlla se esiste una corrispondenza del prefisso tra l'indirizzo IPv6 specificato e uno degli indirizzi IPv6 configurati localmente.
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
Crea un nuovo oggetto RawEndPoint per una versione e un protocollo IP specifici.
NewTCPEndPoint(TCPEndPoint **retEndPoint)
Crea un nuovo oggetto TCPEndPoint.
NewTunEndPoint(TunEndPoint **retEndPoint)
Crea un nuovo oggetto TunEndPoint.
NewUDPEndPoint(UDPEndPoint **retEndPoint)
Crea un nuovo oggetto UDPEndPoint.
PrepareSelect(int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime)
void
Prepara i set di descrittori dei file con cui lavorare select().
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Esegui la risoluzione dell'indirizzo IP di un nome host specificato.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Esegui la risoluzione dell'indirizzo IP di un nome host specificato.
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Esegui la risoluzione dell'indirizzo IP di un nome host specificato.
SetPlatformData(void *aPlatformData)
void
In questo modo, i dati della piattaforma specifici del client specificati vengono impostati sull'istanza per recuperarli in un secondo momento dalla piattaforma client.
Shutdown(void)
Questo è il deinizializzatore esplicito di InetLayer e deve essere chiamato prima di eliminare un'istanza InetLayer creata.
SystemLayer(void) const

Funzioni statiche pubbliche

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

Tipi pubblici

@5

 @5

Lo stato attuale dell'oggetto InetLayer.

Proprietà
kState_Initialized

Stato inizializzato.

kState_NotInitialized

Stato non inizializzato.

kState_ShutdownInProgress

Stato in cui è stato attivato l'arresto.

DNSResolveCompleteFunct

DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct

Attributi pubblici

Stato

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

Lo stato attuale dell'oggetto InetLayer.

[SOLA LETTURA] Stato attuale.

Attributi statici pubblici

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

Funzioni pubbliche

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

CancelResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Annulla qualsiasi query DNS in sospeso (per un callback di completamento corrispondente e lo stato dell'applicazione) che potrebbe essere ancora attiva.

Dettagli
Parametri
[in] onComplete
Un puntatore alla funzione di callback al completamento di una richiesta DNS.
[in] appState
Un puntatore a un oggetto di stato dell'applicazione da passare alla funzione callback come argomento.

DroppableEventDequeued

void DroppableEventDequeued(
  void
)

GetInterfaceFromAddr

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

Recupera l'identificatore di interfaccia per l'indirizzo IP specificato.

Se non è possibile derivare l'identificatore dell'interfaccia, è impostato su INET_NULL_INTERFACEID.

Dettagli
Parametri
[in] addr
Un riferimento all'oggetto IPAddress.
[out] intfId
Un riferimento all'oggetto InterfaceId.
Restituisce
INET_NO_ERROR incondizionatamente.

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Recupera l'indirizzo IPv6 locale del collegamento per un collegamento o un'interfaccia specificati.

Dettagli
Parametri
[in] link
L'interfaccia per la quale viene cercato l'indirizzo IPv6 locale del collegamento.
[out] llAddr
L'indirizzo IPv6 locale del collegamento per il collegamento.
Valori restituiti
INET_ERROR_NOT_IMPLEMENTED
Se IPv6 non è supportato.
INET_ERROR_BAD_ARGS
Se l'indirizzo locale del link è NULL.
INET_ERROR_ADDRESS_NOT_FOUND
Se per il link non è configurato alcun indirizzo.
INET_NO_ERROR
Un successo.

GetPlatformData

void * GetPlatformData(
  void
)

Questa operazione restituisce tutti i dati della piattaforma specifici del client assegnati all'istanza, se sono stati impostati in precedenza.

Dettagli
Restituisce
Dati della piattaforma specifici del cliente, se già impostati; altrimenti NULL.

HandleSelectResult

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

Gestire l'I/O di una chiamata selezionata.

Questo metodo registra l'evento di I/O in attesa in ciascun endpoint attivo e quindi richiama le rispettive funzioni di gestione di I/O per quegli endpoint.

Dettagli
Parametri
[in] selectRes
Il valore restituito della chiamata selezionata.
[in] readfds
Un puntatore all'insieme di descrittori dei file letti.
[in] writefds
Un puntatore all'insieme di descrittori di scrittura dei file.
[in] exceptfds
Un puntatore all'insieme di descrittori dei file con errori.

InetLayer

 InetLayer(
  void
)

Questo è il costruttore predefinito di InetLayer.

Esegue un'inizializzazione di base dei membri dei dati; Tuttavia, poiché InetLayer segue un pattern di progettazione di un inizializzatore esplicito, il metodo InetLayer::Init deve essere chiamato correttamente prima di utilizzare l'oggetto.

Init

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

Questo è l'inizializzatore esplicito di InetLayer.

Questa operazione deve essere chiamata e completata correttamente prima di poter utilizzare l'InetLayer.

Il chiamante può fornire un argomento di contesto facoltativo che verrà restituito tramite qualsiasi funzione hook specifica della piattaforma. Per gli adattamenti basati su LwIP, in genere sarà un puntatore alla coda di eventi associata all'istanza InetLayer.

Le piattaforme possono scegliere di asserire INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS nell'intestazione di configurazione specifica della piattaforma e abilitare gli hook Platform::Inetlayer::WillInit e Platform::Inetlayer::DidInit per applicare a InetLayer estensioni dati o personalizzazioni specifiche della piattaforma.

Dettagli
Parametri
[in] aSystemLayer
Un'istanza richiesta del livello di sistema Weave è già stata inizializzata.
[in] aContext
Un argomento di contesto facoltativo che verrà restituito al chiamante tramite qualsiasi funzione di hook specifica della piattaforma.
Valori restituiti
INET_ERROR_INCORRECT_STATE
Se l'InetLayer è in uno stato non corretto.
INET_ERROR_NO_MEMORY
Se l'elemento InetLayer esaurisce la risorsa per questa richiesta relativa a un nuovo timer,
other
Errori specifici della piattaforma che indicano il motivo dell'errore di inizializzazione.
INET_NO_ERROR
Un successo.

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6Subnet

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

Controlla se esiste una corrispondenza del prefisso tra l'indirizzo IPv6 specificato e uno degli indirizzi IPv6 configurati localmente.

Dettagli
Parametri
[in] addr
L'indirizzo IPv6 per verificare la corrispondenza del prefisso.
Restituisce
true se viene trovata una corrispondenza riuscita, false in caso contrario.

NewRawEndPoint

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

Crea un nuovo oggetto RawEndPoint per una versione e un protocollo IP specifici.

Dettagli
Parametri
[in] ipVer
IPv4 o IPv6.
[in] ipProto
Un protocollo all'interno della famiglia IP (ad es. ICMPv4 o ICMPv6).
[in,out] retEndPoint
Un puntatore a un puntatore dell'oggetto RawEndPoint, che è un parametro restituito al completamento della creazione dell'oggetto. *retEndPoint è NULL se la creazione non riesce.
Valori restituiti
INET_ERROR_INCORRECT_STATE
Se l'oggetto InetLayer non viene inizializzato.
INET_ERROR_NO_ENDPOINTS
Se il pool InetLayerRawEndPoint è pieno e non è possibile creare nuovi endpoint.
INET_NO_ERROR
Un successo.

NewTCPEndPoint

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

Crea un nuovo oggetto TCPEndPoint.

Dettagli
Parametri
[in,out] retEndPoint
Un puntatore a un puntatore dell'oggetto TCPEndPoint, che è un parametro restituito al completamento della creazione dell'oggetto. *retEndPoint è NULL se la creazione non riesce.
Valori restituiti
INET_ERROR_INCORRECT_STATE
Se l'oggetto InetLayer non viene inizializzato.
INET_ERROR_NO_ENDPOINTS
Se il pool InetLayerTCPEndPoint è pieno e non è possibile creare nuovi endpoint.
INET_NO_ERROR
Un successo.

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

Crea un nuovo oggetto TunEndPoint.

Dettagli
Parametri
[in,out] retEndPoint
Un puntatore a un puntatore dell'oggetto TunEndPoint, che è un parametro restituito al completamento della creazione dell'oggetto. *retEndPoint è NULL se la creazione non riesce.
Valori restituiti
INET_ERROR_INCORRECT_STATE
Se l'oggetto InetLayer non viene inizializzato.
INET_ERROR_NO_ENDPOINTS
Se il pool InetLayerTunEndPoint è pieno e non è possibile crearne di nuovi.
INET_NO_ERROR
Un successo.

NewUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

Crea un nuovo oggetto UDPEndPoint.

Dettagli
Parametri
[in,out] retEndPoint
Un puntatore a un puntatore dell'oggetto UDPEndPoint, che è un parametro restituito al completamento della creazione dell'oggetto. *retEndPoint è NULL se la creazione non riesce.
Valori restituiti
INET_ERROR_INCORRECT_STATE
Se l'oggetto InetLayer non viene inizializzato.
INET_ERROR_NO_ENDPOINTS
Se il pool InetLayerUDPEndPoint è pieno e non è possibile creare nuovi endpoint.
INET_NO_ERROR
Un successo.

PrepareSelect

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

Prepara i set di descrittori dei file con cui lavorare select().

Dettagli
Parametri
[out] nfds
L'intervallo di descrittori di file nel set di descrittori di file.
[in] readfds
Un puntatore all'insieme di descrittori leggibili dei file.
[in] writefds
Un puntatore all'insieme di descrittori dei file scrivibili.
[in] exceptfds
Un puntatore all'insieme di descrittori dei file con errori.
[in] sleepTimeTV
Un puntatore a una struttura che specifica per quanto tempo deve passare il sonno dell'elemento selezionato

ResolveHostAddress

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

Esegui la risoluzione dell'indirizzo IP di un nome host specificato.

Dettagli
Parametri
[in] hostName
Un puntatore a una stringa C con terminazione non NULL che rappresenta il nome host su cui eseguire la query.
[in] hostNameLen
La lunghezza della stringa del nome host.
[in] options
Un valore intero che controlla il modo in cui viene eseguita la risoluzione del nome 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
Il numero massimo di indirizzi da archiviare nella tabella DNS.
[in] addrArray
Un puntatore alla tabella DNS.
[in] onComplete
Un puntatore alla funzione di callback al completamento di una richiesta DNS.
[in] appState
Un puntatore allo stato dell'applicazione da passare a onComplete al completamento di una richiesta DNS.
Valori restituiti
INET_NO_ERROR
se una richiesta DNS viene gestita correttamente.
INET_ERROR_NO_MEMORY
se il pool di resolver dello strato Inet è pieno.
INET_ERROR_HOST_NAME_TOO_LONG
se un nome host richiesto è troppo lungo.
INET_ERROR_HOST_NOT_FOUND
se non è stato possibile risolvere il nome host di una richiesta in un indirizzo.
INET_ERROR_DNS_TRY_AGAIN
se un server dei nomi ha restituito un'indicazione di errore temporaneo; Riprova più tardi.
INET_ERROR_DNS_NO_RECOVERY
se un server dei nomi ha restituito un errore irreversibile.
INET_ERROR_NOT_IMPLEMENTED
se la risoluzione DNS non è abilitata sulla piattaforma sottostante.
other
Errore della rete POSIX o del sistema operativo restituito dall'implementazione del resolver DNS sottostante.

ResolveHostAddress

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

Esegui la risoluzione dell'indirizzo IP di un nome host specificato.

Dettagli
Parametri
[in] hostName
Un puntatore a una stringa C con terminazione non NULL che rappresenta il nome host su cui eseguire la query.
[in] hostNameLen
La lunghezza della stringa del nome host.
[in] maxAddrs
Il numero massimo di indirizzi da archiviare nella tabella DNS.
[in] addrArray
Un puntatore alla tabella DNS.
[in] onComplete
Un puntatore alla funzione di callback al completamento di una richiesta DNS.
[in] appState
Un puntatore allo stato dell'applicazione da passare a onComplete al completamento di una richiesta DNS.
Valori restituiti
INET_NO_ERROR
se una richiesta DNS viene gestita correttamente.
INET_ERROR_NO_MEMORY
se il pool di resolver dello strato Inet è pieno.
INET_ERROR_HOST_NAME_TOO_LONG
se un nome host richiesto è troppo lungo.
INET_ERROR_HOST_NOT_FOUND
se non è stato possibile risolvere il nome host di una richiesta in un indirizzo.
INET_ERROR_DNS_TRY_AGAIN
se un server dei nomi ha restituito un'indicazione di errore temporaneo; Riprova più tardi.
INET_ERROR_DNS_NO_RECOVERY
se un server dei nomi ha restituito un errore irreversibile.
INET_ERROR_NOT_IMPLEMENTED
se la risoluzione DNS non è abilitata sulla piattaforma sottostante.
other
Errore della rete POSIX o del sistema operativo restituito dall'implementazione del resolver DNS sottostante.

ResolveHostAddress

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

Esegui la risoluzione dell'indirizzo IP di un nome host specificato.

Dettagli
Parametri
[in] hostName
Un puntatore a una stringa C con terminazione NULL che rappresenta il nome host su cui eseguire la query.
[in] maxAddrs
Il numero massimo di indirizzi da archiviare nella tabella DNS.
[in] addrArray
Un puntatore alla tabella DNS.
[in] onComplete
Un puntatore alla funzione di callback al completamento di una richiesta DNS.
[in] appState
Un puntatore allo stato dell'applicazione da passare a onComplete al completamento di una richiesta DNS.
Valori restituiti
INET_NO_ERROR
se una richiesta DNS viene gestita correttamente.
INET_ERROR_NO_MEMORY
se il pool di resolver dello strato Inet è pieno.
INET_ERROR_HOST_NAME_TOO_LONG
se un nome host richiesto è troppo lungo.
INET_ERROR_HOST_NOT_FOUND
se non è stato possibile risolvere il nome host di una richiesta in un indirizzo.
INET_ERROR_DNS_TRY_AGAIN
se un server dei nomi ha restituito un'indicazione di errore temporaneo; Riprova più tardi.
INET_ERROR_DNS_NO_RECOVERY
se un server dei nomi ha restituito un errore irreversibile.
INET_ERROR_NOT_IMPLEMENTED
se la risoluzione DNS non è abilitata sulla piattaforma sottostante.
other
Errore della rete POSIX o del sistema operativo restituito dall'implementazione del resolver DNS sottostante.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

In questo modo, i dati della piattaforma specifici del client specificati vengono impostati sull'istanza per recuperarli in un secondo momento dalla piattaforma client.

Dettagli
Parametri
[in] aPlatformData
I dati della piattaforma specifica del client da impostare.

Arresto

INET_ERROR Shutdown(
  void
)

Questo è il deinizializzatore esplicito di InetLayer e deve essere chiamato prima di eliminare un'istanza InetLayer creata.

Le piattaforme possono scegliere di asserire INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS nell'intestazione di configurazione specifica della piattaforma e abilitare gli hook Platform::Inetlayer::WillShutdown e Platform::Inetlayer::DidShutdown per effettuare la pulizia delle estensioni dati o delle personalizzazioni specifiche della piattaforma su InetLayer.

Dettagli
Restituisce
INET_NO_ERROR in caso di operazione riuscita; in caso contrario, un errore specifico che indica il motivo dell'errore di arresto.

SystemLayer

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

Funzioni statiche pubbliche

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
)