нл:: Инет:: ИнетЛайер

#include <src/inet/InetLayer.h>

Это обеспечивает доступ к службам Интернета, включая таймеры, разрешение системы доменных имен (DNS), сетевой транспорт TCP, сетевой транспорт UDP и необработанный сетевой транспорт, для одного потока.

Краткое содержание

Для сокетов BSD/POSIX уведомление о готовности события обрабатывается с помощью файловых дескрипторов и традиционной реализации опроса/выбора в адаптации платформы.

Для LwIP уведомление о готовности события обрабатывается через события/сообщения и специфичные для платформы и системы перехватчики для системы событий/сообщений.

Конструкторы и деструкторы

InetLayer (void)
Это конструктор InetLayer по умолчанию.

Публичные типы

@5 {
kState_NotInitialized = 0,
kState_Initialized = 1,
kState_ShutdownInProgress = 2
}
перечисление
Текущее состояние объекта InetLayer .
DNSResolveCompleteFunct определение типа
DNSResolver::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
Обработка ввода-вывода из выбранного вызова.
Init ( Weave::System::Layer & aSystemLayer, void *aContext)
Это явный инициализатор InetLayer .
InitQueueLimiter (void)
MatchLocalIPv6Subnet (const IPAddress & addr)
bool
Проверьте, совпадает ли префикс между указанным адресом IPv6 и любым из локально настроенных адресов IPv6.
NewRawEndPoint (IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
Создает новый объект RawEndPoint для определенной версии IP и протокола.
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)
Это явный деинициализатор InetLayer , который следует вызывать перед удалением созданного экземпляра InetLayer .
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

Публичные атрибуты

Состояние

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

Текущее состояние объекта InetLayer .

[ТОЛЬКО ДЛЯ ЧТЕНИЯ] Текущее состояние.

Публичные статические атрибуты

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

Общественные функции

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

ОтменаРесолвоХостАдресс

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Отмените любой ожидающий DNS-запрос (для соответствующего обратного вызова завершения и состояния приложения), который все еще может быть активным.

Подробности
Параметры
[in] onComplete
Указатель на функцию обратного вызова после завершения DNS-запроса.
[in] appState
Указатель на объект состояния приложения, который будет передан функции обратного вызова в качестве аргумента.

DroppableEventDequeued

void DroppableEventDequeued(
  void
)

ПолучитьИнтерфейсФромАддр

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

Получите идентификатор интерфейса для указанного IP-адреса.

Если идентификатор интерфейса не может быть получен, ему присваивается значение INET_NULL_INTERFACEID .

Подробности
Параметры
[in] addr
Ссылка на объект IPAddress .
[out] intfId
Ссылка на объект InterfaceId.
Возврат
INET_NO_ERROR безусловно.

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Получите локальный IPv6-адрес ссылки для указанной ссылки или интерфейса.

Подробности
Параметры
[in] link
Интерфейс, для которого ищется локальный IPv6-адрес ссылки.
[out] llAddr
Локальный IPv6-адрес ссылки.
Возвращаемые значения
INET_ERROR_NOT_IMPLEMENTED
Если IPv6 не поддерживается.
INET_ERROR_BAD_ARGS
Если локальный адрес ссылки равен NULL.
INET_ERROR_ADDRESS_NOT_FOUND
Если для ссылки не настроен какой-либо адрес.
INET_NO_ERROR
Об успехе.

Получить данные платформы

void * GetPlatformData(
  void
)

Это возвращает любые данные платформы, специфичные для клиента, назначенные экземпляру, если они были установлены ранее.

Подробности
Возврат
Данные платформы, специфичные для клиента, если они были установлены ранее; в противном случае НУЛЬ.

HandleSelectResult

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

Обработка ввода-вывода из выбранного вызова.

Этот метод регистрирует ожидающее событие ввода-вывода в каждой активной конечной точке, а затем вызывает соответствующие функции обработки ввода-вывода для этих конечных точек.

Подробности
Параметры
[in] selectRes
Возвращаемое значение вызова select.
[in] readfds
Указатель на набор прочитанных файловых дескрипторов.
[in] writefds
Указатель на набор дескрипторов файлов для записи.
[in] exceptfds
Указатель на набор файловых дескрипторов с ошибками.

ИнетЛайер

 InetLayer(
  void
)

Это конструктор InetLayer по умолчанию.

Он выполняет некоторую базовую инициализацию элементов данных; однако, поскольку InetLayer следует явному шаблону проектирования инициализатора, метод InetLayer::Init должен быть успешно вызван перед использованием объекта.

В этом

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

Это явный инициализатор InetLayer .

Это необходимо вызвать и успешно завершить, прежде чем можно будет использовать InetLayer .

Вызывающий может предоставить необязательный аргумент контекста, который будет передан обратно через любую функцию-перехватчик, специфичную для платформы. Для адаптаций на основе LwIP это обычно будет указатель на очередь событий, связанную с экземпляром InetLayer .

Платформы могут выбрать утверждение INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS в своем заголовке конфигурации для конкретной платформы и включить перехватчики Platform::InetLayer::WillInit и Platform::InetLayer::DidInit для выполнения специфичных для платформы настроек или расширений данных для InetLayer .

Подробности
Параметры
[in] aSystemLayer
Требуемый экземпляр уровня системы Weave уже успешно инициализирован.
[in] aContext
Необязательный аргумент контекста, который будет передан обратно вызывающей стороне через любую функцию-перехватчик, специфичную для платформы.
Возвращаемые значения
INET_ERROR_INCORRECT_STATE
Если InetLayer находится в неправильном состоянии.
INET_ERROR_NO_MEMORY
Если у InetLayer закончится ресурс для этого запроса на новый таймер.
other
Ошибки, специфичные для платформы, указывающие причину сбоя инициализации.
INET_NO_ERROR
Об успехе.

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

СопоставлениелокальныйIPv6Подсеть

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

Проверьте, совпадает ли префикс между указанным адресом IPv6 и любым из локально настроенных адресов IPv6.

Подробности
Параметры
[in] addr
Адрес IPv6 для проверки совпадения префикса.
Возврат
true, если найдено успешное совпадение, в противном случае — false.

НовыйRawEndPoint

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

Создает новый объект RawEndPoint для определенной версии IP и протокола.

Подробности
Параметры
[in] ipVer
IPv4 или IPv6.
[in] ipProto
Протокол семейства IP (например, ICMPv4 или ICMPv6).
[in,out] retEndPoint
Указатель на указатель объекта RawEndPoint , который является возвращаемым параметром после завершения создания объекта. *retEndPoint имеет значение NULL, если создание не удалось.
Возвращаемые значения
INET_ERROR_INCORRECT_STATE
Если объект InetLayer не инициализирован.
INET_ERROR_NO_ENDPOINTS
Если пул InetLayer RawEndPoint заполнен и новые конечные точки создать невозможно.
INET_NO_ERROR
Об успехе.

НьюTCPEndPoint

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

Создает новый объект TCPEndPoint .

Подробности
Параметры
[in,out] retEndPoint
Указатель на указатель объекта TCPEndPoint , который является возвращаемым параметром после завершения создания объекта. *retEndPoint имеет значение NULL, если создание не удалось.
Возвращаемые значения
INET_ERROR_INCORRECT_STATE
Если объект InetLayer не инициализирован.
INET_ERROR_NO_ENDPOINTS
Если пул InetLayer TCPEndPoint заполнен и новые конечные точки создать невозможно.
INET_NO_ERROR
Об успехе.

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

Создает новый объект TunEndPoint .

Подробности
Параметры
[in,out] retEndPoint
Указатель на указатель объекта TunEndPoint , который является возвращаемым параметром после завершения создания объекта. *retEndPoint имеет значение NULL, если создание не удалось.
Возвращаемые значения
INET_ERROR_INCORRECT_STATE
Если объект InetLayer не инициализирован.
INET_ERROR_NO_ENDPOINTS
Если пул InetLayer TunEndPoint заполнен и новые создать невозможно.
INET_NO_ERROR
Об успехе.

НоваяUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

Создает новый объект UDPEndPoint .

Подробности
Параметры
[in,out] retEndPoint
Указатель на указатель объекта UDPEndPoint , который является возвращаемым параметром после завершения создания объекта. *retEndPoint имеет значение NULL, если создание не удалось.
Возвращаемые значения
INET_ERROR_INCORRECT_STATE
Если объект InetLayer не инициализирован.
INET_ERROR_NO_ENDPOINTS
Если пул InetLayer UDPEndPoint заполнен и новые конечные точки создать невозможно.
INET_NO_ERROR
Об успехе.

ПодготовитьВыбрать

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

Подготовьте наборы файловых дескрипторов для работы select() .

Подробности
Параметры
[out] nfds
Диапазон файловых дескрипторов в наборе файловых дескрипторов.
[in] readfds
Указатель на набор читаемых файловых дескрипторов.
[in] writefds
Указатель на набор записываемых файловых дескрипторов.
[in] exceptfds
Указатель на набор файловых дескрипторов с ошибками.
[in] sleepTimeTV
Указатель на структуру, определяющую, как долго выбор должен находиться в режиме ожидания.

Резолвхостадрес

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

Выполните разрешение IP-адреса указанного имени хоста.

Подробности
Параметры
[in] hostName
Указатель на строку C, не завершающуюся NULL, представляющую имя хоста, к которому осуществляется запрос.
[in] hostNameLen
Длина строки имени хоста.
[in] options
Целочисленное значение, управляющее тем, как выполняется разрешение имени хоста.
                    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
Максимальное количество адресов для хранения в таблице DNS.
[in] addrArray
Указатель на таблицу DNS.
[in] onComplete
Указатель на функцию обратного вызова после завершения DNS-запроса.
[in] appState
Указатель на состояние приложения, который будет передан в onComplete после завершения DNS-запроса.
Возвращаемые значения
INET_NO_ERROR
если запрос DNS обработан успешно.
INET_ERROR_NO_MEMORY
если пул преобразователей уровня Inet заполнен.
INET_ERROR_HOST_NAME_TOO_LONG
если запрошенное имя хоста слишком длинное.
INET_ERROR_HOST_NOT_FOUND
если имя хоста запроса не может быть преобразовано в адрес.
INET_ERROR_DNS_TRY_AGAIN
если сервер имен возвратил индикацию временного сбоя; Попробуйте позже.
INET_ERROR_DNS_NO_RECOVERY
если сервер имен возвратил неисправимую ошибку.
INET_ERROR_NOT_IMPLEMENTED
если разрешение DNS не включено на базовой платформе.
other
Ошибка сети или ОС POSIX, возвращаемая базовой реализацией преобразователя DNS.

Резолвхостадрес

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

Выполните разрешение IP-адреса указанного имени хоста.

Подробности
Параметры
[in] hostName
Указатель на строку C, не завершающуюся NULL, представляющую имя хоста, к которому осуществляется запрос.
[in] hostNameLen
Длина строки имени хоста.
[in] maxAddrs
Максимальное количество адресов для хранения в таблице DNS.
[in] addrArray
Указатель на таблицу DNS.
[in] onComplete
Указатель на функцию обратного вызова после завершения DNS-запроса.
[in] appState
Указатель на состояние приложения, который будет передан в onComplete после завершения DNS-запроса.
Возвращаемые значения
INET_NO_ERROR
если запрос DNS обработан успешно.
INET_ERROR_NO_MEMORY
если пул преобразователей уровня Inet заполнен.
INET_ERROR_HOST_NAME_TOO_LONG
если запрошенное имя хоста слишком длинное.
INET_ERROR_HOST_NOT_FOUND
если имя хоста запроса не может быть преобразовано в адрес.
INET_ERROR_DNS_TRY_AGAIN
если сервер имен возвратил индикацию временного сбоя; Попробуйте позже.
INET_ERROR_DNS_NO_RECOVERY
если сервер имен возвратил неисправимую ошибку.
INET_ERROR_NOT_IMPLEMENTED
если разрешение DNS не включено на базовой платформе.
other
Ошибка сети или ОС POSIX, возвращаемая базовой реализацией преобразователя DNS.

Резолвхостадрес

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

Выполните разрешение IP-адреса указанного имени хоста.

Подробности
Параметры
[in] hostName
Указатель на строку C, завершающуюся NULL, представляющую имя хоста, который будет запрошен.
[in] maxAddrs
Максимальное количество адресов для хранения в таблице DNS.
[in] addrArray
Указатель на таблицу DNS.
[in] onComplete
Указатель на функцию обратного вызова после завершения DNS-запроса.
[in] appState
Указатель на состояние приложения, который будет передан в onComplete после завершения DNS-запроса.
Возвращаемые значения
INET_NO_ERROR
если запрос DNS обработан успешно.
INET_ERROR_NO_MEMORY
если пул преобразователей уровня Inet заполнен.
INET_ERROR_HOST_NAME_TOO_LONG
если запрошенное имя хоста слишком длинное.
INET_ERROR_HOST_NOT_FOUND
если имя хоста запроса не может быть преобразовано в адрес.
INET_ERROR_DNS_TRY_AGAIN
если сервер имен возвратил индикацию временного сбоя; Попробуйте позже.
INET_ERROR_DNS_NO_RECOVERY
если сервер имен возвратил неисправимую ошибку.
INET_ERROR_NOT_IMPLEMENTED
если разрешение DNS не включено на базовой платформе.
other
Ошибка сети или ОС POSIX, возвращаемая базовой реализацией преобразователя DNS.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

При этом указанные данные платформы, специфичные для клиента, устанавливаются в экземпляр для последующего извлечения клиентской платформой.

Подробности
Параметры
[in] 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
)

Обновить снимок

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