nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

Zapewnia to dostęp do usług internetowych, w tym liczników czasu, rozpoznawania nazw DNS, transportu TCP, transportu sieciowego UDP i nieprzetworzonego transportu sieciowego, w pojedynczym wątku.

Podsumowanie

W przypadku gniazd BSD/POSIX powiadomienia o gotowości zdarzeń są obsługiwane za pomocą deskryptorów plików oraz tradycyjnej implementacji sondowania / wyboru w adaptacji platformy.

W przypadku protokołu LwIP powiadomienie o gotowości zdarzenia jest obsługiwane przez zdarzenia / wiadomości oraz punkty zaczepienia platformy i systemu dla systemu zdarzeń / wiadomości.

Konstruktory i niszczyciele

InetLayer(void)
To jest domyślny konstruktor InetLayer.

Typy publiczne

@5{
  kState_NotInitialized = 0,
  kState_Initialized = 1,
  kState_ShutdownInProgress = 2
}
enum | typ wyliczeniowy
Bieżący stan obiektu InetLayer.
DNSResolveCompleteFunct typedef
DNSResolver::OnResolveCompleteFunct

Atrybuty publiczne

State
enum nl::Inet::InetLayer::@5
Bieżący stan obiektu InetLayer.

Publiczne atrybuty statyczne

sInetEventHandlerDelegate

Funkcje publiczne

CanEnqueueDroppableEvent(void)
bool
CancelResolveHostAddress(DNSResolveCompleteFunct onComplete, void *appState)
void
Anuluj wszystkie oczekujące zapytania DNS (dotyczące pasującego wywołania zwrotnego i stanu aplikacji), które mogą być nadal aktywne.
DroppableEventDequeued(void)
void
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
Uzyskaj identyfikator interfejsu dla określonego adresu IP.
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
Pobieranie lokalnego adresu IPv6 połączenia dla określonego linku lub interfejsu.
GetPlatformData(void)
void *
Spowoduje to zwrócenie wszystkich danych platformy specyficznych dla klienta, które zostały przypisane do instancji, jeśli zostały wcześniej ustawione.
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
void
Obsługa wejścia-wyjścia z wybranego połączenia.
Init(Weave::System::Layer & aSystemLayer, void *aContext)
To jest jawny inicjator InetLayer.
InitQueueLimiter(void)
MatchLocalIPv6Subnet(const IPAddress & addr)
bool
Sprawdź, czy występuje dopasowanie prefiksu między podanym adresem IPv6 a którymkolwiek z lokalnie skonfigurowanych adresów IPv6.
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
Tworzy nowy obiekt RawEndPoint dla określonej wersji adresu IP i protokołu.
NewTCPEndPoint(TCPEndPoint **retEndPoint)
Tworzy nowy obiekt TCPEndPoint.
NewTunEndPoint(TunEndPoint **retEndPoint)
Tworzy nowy obiekt TunEndPoint.
NewUDPEndPoint(UDPEndPoint **retEndPoint)
Tworzy nowy obiekt UDPEndPoint.
PrepareSelect(int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime)
void
Przygotuj zestawy deskryptorów plików, których będzie używać select().
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Rozpoznawanie nazw hostów przez adresy IP o określonej nazwie.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Rozpoznawanie nazw hostów przez adresy IP o określonej nazwie.
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Rozpoznawanie nazw hostów przez adresy IP o określonej nazwie.
SetPlatformData(void *aPlatformData)
void
Powoduje to ustawienie w instancji określonych danych platformy specyficznych dla klienta, które mogą być później pobierane przez platformę klienta.
Shutdown(void)
Jest to jawny de inicjator InetLayer, który należy wywołać przed pozbyciem się instancji InetLayer.
SystemLayer(void) const

Publiczne funkcje statyczne

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

Typy publiczne

@5

 @5

Bieżący stan obiektu InetLayer.

Właściwości
kState_Initialized

Stan zainicjowany.

kState_NotInitialized

Nie zainicjowano.

kState_ShutdownInProgress

Stan, w którym aktywowano wyłączenie.

DNSResolveCompleteFunct

DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct

Atrybuty publiczne

Stan

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

Bieżący stan obiektu InetLayer.

[READ-ONLY] Bieżący stan.

Publiczne atrybuty statyczne

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

Funkcje publiczne

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

CancelResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Anuluj wszystkie oczekujące zapytania DNS (dotyczące pasującego wywołania zwrotnego i stanu aplikacji), które mogą być nadal aktywne.

Szczegóły
Parametry
[in] onComplete
Wskaźnik do funkcji wywołania zwrotnego po zakończeniu żądania DNS.
[in] appState
Wskaźnik do obiektu stanu aplikacji, który ma być przekazywany jako argument do funkcji wywołania zwrotnego.

DroppableEventDequeued

void DroppableEventDequeued(
  void
)

GetInterfaceFromAddr

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

Uzyskaj identyfikator interfejsu dla określonego adresu IP.

Jeśli nie można wyodrębnić identyfikatora interfejsu, ustaw go na wartość INET_NULL_INTERFACEID.

Szczegóły
Parametry
[in] addr
Odwołanie do obiektu IPAddress.
[out] intfId
Odwołanie do obiektu InterfaceId.
Zwroty
INET_NO_ERROR bezwarunkowo.

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Pobieranie lokalnego adresu IPv6 połączenia dla określonego linku lub interfejsu.

Szczegóły
Parametry
[in] link
Interfejs, dla którego szukasz lokalnego adresu IPv6 połączenia.
[out] llAddr
Lokalny adres IPv6 połączenia.
Zwracane wartości
INET_ERROR_NOT_IMPLEMENTED
Jeśli protokół IPv6 nie jest obsługiwany.
INET_ERROR_BAD_ARGS
Jeśli adres lokalny linku ma wartość NULL.
INET_ERROR_ADDRESS_NOT_FOUND
Jeśli link nie ma skonfigurowanych żadnych adresów.
INET_NO_ERROR
Powodzenie.

GetPlatformData

void * GetPlatformData(
  void
)

Spowoduje to zwrócenie wszystkich danych platformy specyficznych dla klienta, które zostały przypisane do instancji, jeśli zostały wcześniej ustawione.

Szczegóły
Zwroty
dane platformy dotyczące konkretnego klienta, jeśli zostały już ustawione; w przeciwnym razie ma wartość NULL.

HandleSelectResult

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

Obsługa wejścia-wyjścia z wybranego połączenia.

Ta metoda rejestruje oczekujące zdarzenie wejścia-wyjścia w każdym aktywnym punkcie końcowym, a następnie wywołuje odpowiednie funkcje obsługi wejścia-wyjścia dla tych punktów końcowych.

Szczegóły
Parametry
[in] selectRes
Wartość zwrotna wybranego wywołania.
[in] readfds
Wskaźnik do zbioru deskryptorów plików do odczytu.
[in] writefds
Wskaźnik do zbioru deskryptorów plików zapisu.
[in] exceptfds
Wskaźnik do zbioru deskryptorów plików z błędami.

InetLayer

 InetLayer(
  void
)

To jest domyślny konstruktor InetLayer.

Inicjuje kilka podstawowych elementów danych; Ponieważ jednak InetLayer ma wyraźny wzorzec projektowania inicjatora, przed użyciem obiektu należy wywołać metodę InetLayer::Init.

Init

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

To jest jawny inicjator InetLayer.

Aby można było użyć warstwy InetLayer, ta operacja musi zostać wywołana i zakończona.

Element wywołujący może podać opcjonalny argument kontekstowy, który będzie zwracany przez dowolne funkcje hooki specyficzne dla danej platformy. W przypadku adaptacji opartych na LwIP będzie to zwykle wskaźnik do kolejki zdarzeń powiązanej z instancją InetLayer.

Platformy mogą zgłosić zaczepy INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS w nagłówku konfiguracji na poziomie platformy i włączyć tagi Platform::InetLayer::WillInit i Platform::InetLayer::DidInit w celu wprowadzenia dostosowań specyficznych dla platformy lub rozszerzeń danych w InetLayer.

Szczegóły
Parametry
[in] aSystemLayer
Wymagana instancja warstwy systemu Weave została już zainicjowana.
[in] aContext
Opcjonalny argument kontekstowy, który będzie przekazywany z powrotem do elementu wywołującego przez dowolne funkcje hooki specyficzne dla platformy.
Zwracane wartości
INET_ERROR_INCORRECT_STATE
Jeśli InetLayer jest w nieprawidłowym stanie.
INET_ERROR_NO_MEMORY
Jeśli w warstwie InetLayer skończą się zasoby dla tego żądania dla nowego licznika czasu.
other
Błędy dotyczące platformy wskazujące przyczynę niepowodzenia zainicjowania.
INET_NO_ERROR
Powodzenie.

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6Subnet

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

Sprawdź, czy występuje dopasowanie prefiksu między podanym adresem IPv6 a którymkolwiek z lokalnie skonfigurowanych adresów IPv6.

Szczegóły
Parametry
[in] addr
Adres IPv6, który ma zostać sprawdzony pod kątem dopasowania prefiksu.
Zwroty
true (prawda) w przypadku znalezienia prawidłowego dopasowania. W przeciwnym razie ma wartość false (fałsz).

NewRawEndPoint

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

Tworzy nowy obiekt RawEndPoint dla określonej wersji adresu IP i protokołu.

Szczegóły
Parametry
[in] ipVer
IPv4 lub IPv6.
[in] ipProto
Protokół w rodzinie adresów IP (np. ICMPv4 lub ICMPv6).
[in,out] retEndPoint
Wskaźnik do wskaźnika obiektu RawEndPoint, który jest parametrem zwrotnym po zakończeniu tworzenia obiektu. *retEndPoint ma wartość NULL, jeśli utworzenie się nie uda.
Zwracane wartości
INET_ERROR_INCORRECT_STATE
Jeśli obiekt InetLayer nie został zainicjowany.
INET_ERROR_NO_ENDPOINTS
Jeśli pula InetLayerRawEndPoint jest pełna i nie można utworzyć nowych punktów końcowych.
INET_NO_ERROR
Powodzenie.

NewTCPEndPoint

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

Tworzy nowy obiekt TCPEndPoint.

Szczegóły
Parametry
[in,out] retEndPoint
Wskaźnik do wskaźnika obiektu TCPEndPoint, który jest parametrem zwrotnym po zakończeniu tworzenia obiektu. *retEndPoint ma wartość NULL, jeśli utworzenie się nie uda.
Zwracane wartości
INET_ERROR_INCORRECT_STATE
Jeśli obiekt InetLayer nie został zainicjowany.
INET_ERROR_NO_ENDPOINTS
Jeśli pula InetLayerTCPEndPoint jest pełna i nie można utworzyć nowych punktów końcowych,
INET_NO_ERROR
Powodzenie.

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

Tworzy nowy obiekt TunEndPoint.

Szczegóły
Parametry
[in,out] retEndPoint
Wskaźnik do wskaźnika obiektu TunEndPoint, który jest parametrem zwrotnym po zakończeniu tworzenia obiektu. *retEndPoint ma wartość NULL, jeśli utworzenie się nie uda.
Zwracane wartości
INET_ERROR_INCORRECT_STATE
Jeśli obiekt InetLayer nie został zainicjowany.
INET_ERROR_NO_ENDPOINTS
Jeśli pula InetLayerTunEndPoint jest pełna i nie można utworzyć nowych.
INET_NO_ERROR
Powodzenie.

NewUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

Tworzy nowy obiekt UDPEndPoint.

Szczegóły
Parametry
[in,out] retEndPoint
Wskaźnik do wskaźnika obiektu UDPEndPoint, który jest parametrem zwrotnym po zakończeniu tworzenia obiektu. *retEndPoint ma wartość NULL, jeśli utworzenie się nie uda.
Zwracane wartości
INET_ERROR_INCORRECT_STATE
Jeśli obiekt InetLayer nie został zainicjowany.
INET_ERROR_NO_ENDPOINTS
Jeśli pula InetLayerUDPEndPoint jest pełna i nie można tworzyć nowych punktów końcowych.
INET_NO_ERROR
Powodzenie.

PrepareSelect

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

Przygotuj zestawy deskryptorów plików, których będzie używać select().

Szczegóły
Parametry
[out] nfds
Zakres deskryptorów plików w zestawie deskryptorów plików.
[in] readfds
Wskaźnik do zbioru możliwych do odczytania deskryptorów plików.
[in] writefds
Wskaźnik do zbioru deskryptorów plików dostępnych do zapisu.
[in] exceptfds
Wskaźnik do zbioru deskryptorów plików z błędami.
[in] sleepTimeTV
Wskaźnik do domu określający, jak długo ma być uśpiony obiekt

ResolveHostAddress

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

Rozpoznawanie nazw hostów przez adresy IP o określonej nazwie.

Szczegóły
Parametry
[in] hostName
Wskaźnik do ciągu znaków C bez zakończenia wartości NULL i reprezentujących nazwę hosta, którego ma dotyczyć zapytanie.
[in] hostNameLen
Długość ciągu znaków w nazwie hosta.
[in] options
Wartość całkowita określająca sposób rozpoznawania nazwy hosta.
                    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
Maksymalna liczba adresów do przechowywania w tabeli DNS.
[in] addrArray
Wskaźnik do tabeli DNS.
[in] onComplete
Wskaźnik do funkcji wywołania zwrotnego po zakończeniu żądania DNS.
[in] appState
Wskaźnik do stanu aplikacji, który ma zostać przekazany do onComplete po zakończeniu żądania DNS.
Zwracane wartości
INET_NO_ERROR
po pomyślnym przetworzeniu żądania DNS.
INET_ERROR_NO_MEMORY
jeśli pula resolvera warstwy Inet jest pełna.
INET_ERROR_HOST_NAME_TOO_LONG
jeśli żądana nazwa hosta jest za długa.
INET_ERROR_HOST_NOT_FOUND
jeśli nazwy hosta żądania nie można przekształcić w adres.
INET_ERROR_DNS_TRY_AGAIN
jeśli serwer nazw zwrócił komunikat o tymczasowej awarii; spróbuj ponownie później.
INET_ERROR_DNS_NO_RECOVERY
jeśli serwer nazw zwrócił nieodwracalny błąd.
INET_ERROR_NOT_IMPLEMENTED
jeśli rozpoznawanie nazw DNS nie jest włączone na danej platformie.
other
Błąd sieci lub systemu operacyjnego POSIX zwrócony przez podstawową implementację resolvera DNS.

ResolveHostAddress

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

Rozpoznawanie nazw hostów przez adresy IP o określonej nazwie.

Szczegóły
Parametry
[in] hostName
Wskaźnik do ciągu znaków C bez zakończenia wartości NULL i reprezentujących nazwę hosta, którego ma dotyczyć zapytanie.
[in] hostNameLen
Długość ciągu znaków w nazwie hosta.
[in] maxAddrs
Maksymalna liczba adresów do przechowywania w tabeli DNS.
[in] addrArray
Wskaźnik do tabeli DNS.
[in] onComplete
Wskaźnik do funkcji wywołania zwrotnego po zakończeniu żądania DNS.
[in] appState
Wskaźnik do stanu aplikacji, który ma zostać przekazany do onComplete po zakończeniu żądania DNS.
Zwracane wartości
INET_NO_ERROR
po pomyślnym przetworzeniu żądania DNS.
INET_ERROR_NO_MEMORY
jeśli pula resolvera warstwy Inet jest pełna.
INET_ERROR_HOST_NAME_TOO_LONG
jeśli żądana nazwa hosta jest za długa.
INET_ERROR_HOST_NOT_FOUND
jeśli nazwy hosta żądania nie można przekształcić w adres.
INET_ERROR_DNS_TRY_AGAIN
jeśli serwer nazw zwrócił komunikat o tymczasowej awarii; spróbuj ponownie później.
INET_ERROR_DNS_NO_RECOVERY
jeśli serwer nazw zwrócił nieodwracalny błąd.
INET_ERROR_NOT_IMPLEMENTED
jeśli rozpoznawanie nazw DNS nie jest włączone na danej platformie.
other
Błąd sieci lub systemu operacyjnego POSIX zwrócony przez podstawową implementację resolvera DNS.

ResolveHostAddress

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

Rozpoznawanie nazw hostów przez adresy IP o określonej nazwie.

Szczegóły
Parametry
[in] hostName
Wskaźnik do ciągu znaków C z wartością NULL i reprezentującej nazwę hosta, którego ma dotyczyć zapytanie.
[in] maxAddrs
Maksymalna liczba adresów do przechowywania w tabeli DNS.
[in] addrArray
Wskaźnik do tabeli DNS.
[in] onComplete
Wskaźnik do funkcji wywołania zwrotnego po zakończeniu żądania DNS.
[in] appState
Wskaźnik do stanu aplikacji, który ma zostać przekazany do onComplete po zakończeniu żądania DNS.
Zwracane wartości
INET_NO_ERROR
po pomyślnym przetworzeniu żądania DNS.
INET_ERROR_NO_MEMORY
jeśli pula resolvera warstwy Inet jest pełna.
INET_ERROR_HOST_NAME_TOO_LONG
jeśli żądana nazwa hosta jest za długa.
INET_ERROR_HOST_NOT_FOUND
jeśli nazwy hosta żądania nie można przekształcić w adres.
INET_ERROR_DNS_TRY_AGAIN
jeśli serwer nazw zwrócił komunikat o tymczasowej awarii; spróbuj ponownie później.
INET_ERROR_DNS_NO_RECOVERY
jeśli serwer nazw zwrócił nieodwracalny błąd.
INET_ERROR_NOT_IMPLEMENTED
jeśli rozpoznawanie nazw DNS nie jest włączone na danej platformie.
other
Błąd sieci lub systemu operacyjnego POSIX zwrócony przez podstawową implementację resolvera DNS.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

Powoduje to ustawienie w instancji określonych danych platformy specyficznych dla klienta, które mogą być później pobierane przez platformę klienta.

Szczegóły
Parametry
[in] aPlatformData
Dane platformy związane z konkretnym klientem do ustawienia.

Wyłączono

INET_ERROR Shutdown(
  void
)

Jest to jawny de inicjator InetLayer, który należy wywołać przed pozbyciem się instancji InetLayer.

Platformy mogą zgłosić zaczepy INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS w nagłówku konfiguracji na poziomie platformy i włączyć w narzędziu InetLayer haczyki Platform::InetLayer::WillDisabledown i Platform::InetLayer::DidDisabledown w celu czyszczenia dostosowań specyficznych dla platformy lub rozszerzeń danych.

Szczegóły
Zwroty
INET_NO_ERROR po powodzeniu; w przeciwnym razie określony błąd wskazujący przyczynę niepowodzenia wyłączenia.

SystemLayer

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

Publiczne funkcje statyczne

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
)