нл:: Переплетение:: Слой Сообщения

#include <src/lib/core/WeaveMessageLayer.h>

Определение класса WeaveMessageLayer , который управляет связью с другими узлами Weave.

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

Он использует одну из нескольких конечных точек InetLayer для установления канала связи с другими узлами Weave.

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

WeaveMessageLayer (void)
Конструктор слоя Weave Message.

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

AcceptErrorFunct )(WeaveMessageLayer *msgLayer, WEAVE_ERROR err) определение типа
void(*
Эта функция является обратным вызовом более высокого уровня для сообщения об ошибке во время обработки входящего TCP-соединения.
CallbackRemovedFunct )(void *listenerState) определение типа
void(*
Эта функция вызывается для удаления обратного вызова.
ConnectionReceiveFunct )(WeaveMessageLayer *msgLayer, WeaveConnection *con) определение типа
void(*
Эта функция является обратным вызовом более высокого уровня для обработки входящего TCP-соединения.
MessageLayerActivityChangeHandlerFunct )(bool messageLayerIsActive) определение типа
void(*
Эта функция является обратным вызовом приложения для сообщения об изменении активности уровня сообщений.
MessageReceiveFunct )(WeaveMessageLayer *msgLayer, WeaveMessageInfo *msgInfo, PacketBuffer *payload) определение типа
void(*
Эта функция представляет собой обратный вызов более высокого уровня, который вызывается при получении сообщения Weave по UDP.
ReceiveErrorFunct )(WeaveMessageLayer *msgLayer, WEAVE_ERROR err, const IPPacketInfo *pktInfo) определение типа
void(*
Эта функция представляет собой обратный вызов более высокого уровня, вызываемый при обнаружении ошибки.
State {
kState_NotInitialized = 0,
kState_Initializing = 1,
kState_Initialized = 2
}
перечисление
Состояние WeaveMessageLayer .
TunneledMsgReceiveFunct )(WeaveMessageLayer *msgLayer, PacketBuffer *payload) определение типа
void(*
Эта функция представляет собой обратный вызов более высокого уровня, который вызывается при получении туннелированного пакета через локальный туннель UDP.

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

AppState
void *
Указатель на объект состояния конкретного приложения.
ExchangeMgr
[ТОЛЬКО ДЛЯ ЧТЕНИЯ] Связанный объект WeaveExchangeManager .
FabricState
[ТОЛЬКО ДЛЯ ЧТЕНИЯ] Связанный объект WeaveFabricState .
IncomingConIdleTimeout
uint32_t
Тайм-аут простоя по умолчанию (в миллисекундах) для входящих соединений.
Inet
InetLayer *
[ТОЛЬКО ДЛЯ ЧТЕНИЯ] Связанный объект InetLayer.
IsListening
bool
[ТОЛЬКО ДЛЯ ЧТЕНИЯ] True, если прослушивается входящие соединения/сообщения, в противном случае — false.
OnAcceptError
OnConnectionReceived
OnMessageReceived
OnReceiveError
OnUDPTunneledMessageReceived
SecurityMgr
[ТОЛЬКО ДЛЯ ЧТЕНИЯ] Связанный объект WeaveSecurityManager .
State
uint8_t
[ТОЛЬКО ДЛЯ ЧТЕНИЯ] Состояние объекта WeaveMessageLayer .
SystemLayer
mDropMessage
bool
Внутренний и только для отладки; Если установлено, WeaveMessageLayer удаляет сообщение и возвращает его.

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

ClearUnsecuredConnectionListener ( ConnectionReceiveFunct oldOnUnsecuredConnectionReceived, CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved)
CloseEndpoints (void)
Закройте все открытые конечные точки TCP и UDP.
CreateTunnel ( WeaveConnectionTunnel **tunPtr, WeaveConnection & conOne, WeaveConnection & conTwo, uint32_t inactivityTimeoutMS)
Создайте WeaveConnectionTunnel , соединив два указанных WeaveConnection.
DecodeHeader ( PacketBuffer *msgBuf, WeaveMessageInfo *msgInfo, uint8_t **payloadStart)
Декодируйте заголовок слоя сообщения Weave из полученного сообщения Weave.
EncodeMessage ( WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf, WeaveConnection *con, uint16_t maxLen, uint16_t reserve)
Закодируйте заголовок WeaveMessageLayer в PacketBuffer.
EncodeMessage (const IPAddress & destAddr, uint16_t destPort, InterfaceId sendIntId, WeaveMessageInfo *msgInfo, PacketBuffer *payload)
Закодируйте заголовок уровня сообщений Weave в PacketBuffer.
EphemeralUDPPortEnabled (void) const
bool
Проверьте, следует ли отправлять локально инициированные обмены UDP Weave с эфемерного исходного порта UDP.
GetConnectionPoolStats (nl::Weave::System::Stats::count_t & aOutInUse) const
void
Получите количество используемых WeaveConnections и размер пула.
IPv4ListenEnabled (void) const
bool
Проверьте, настроен ли WeaveMessageLayer для прослушивания входящих сообщений через IPv4.
IPv6ListenEnabled (void) const
bool
Проверьте, настроен ли WeaveMessageLayer для прослушивания входящих сообщений через IPv4.
Init ( InitContext *context)
Инициализируйте объект слоя Weave Message.
IsBoundToLocalIPv4Address (void) const
bool
Проверьте, привязан ли WeaveMessageLayer к локальному адресу IPv4.
IsBoundToLocalIPv6Address (void) const
bool
Проверьте, привязан ли WeaveMessageLayer к локальному IPv6-адресу.
IsMessageLayerActive (void)
bool
NewConnection (void)
Создайте новый объект WeaveConnection из пула.
NewConnectionTunnel (void)
Создайте новый объект WeaveConnectionTunnel из пула.
ReEncodeMessage ( PacketBuffer *buf)
RefreshEndpoints (void)
Обновите конечные точки InetLayer на основе текущего состояния сетевых интерфейсов системы.
ResendMessage ( WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Повторно отправьте закодированное сообщение Weave, используя базовую конечную точку UDP Inetlayer.
ResendMessage (const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Повторно отправьте закодированное сообщение Weave, используя базовую конечную точку UDP Inetlayer.
ResendMessage (const IPAddress & destAddr, uint16_t destPort, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Повторно отправьте закодированное сообщение Weave, используя базовую конечную точку UDP Inetlayer.
ResendMessage (const IPAddress & destAddr, uint16_t destPort, InterfaceId interfaceId, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Повторно отправьте закодированное сообщение Weave, используя базовую конечную точку UDP Inetlayer.
SendMessage ( WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Отправьте сообщение Weave, используя базовую конечную точку UDP Inetlayer после его кодирования.
SendMessage (const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Отправьте сообщение Weave, используя базовую конечную точку UDP Inetlayer после его кодирования.
SendMessage (const IPAddress & destAddr, uint16_t destPort, InterfaceId sendIntfId, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Отправьте сообщение Weave, используя базовую конечную точку UDP Inetlayer после его кодирования.
SendUDPTunneledMessage (const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Функция для отправки туннелированного пакета через локальный туннель UDP.
SetSignalMessageLayerActivityChanged ( MessageLayerActivityChangeHandlerFunct messageLayerActivityChangeHandler)
void
Установите обработчик приложения, который будет вызываться каждый раз, когда изменяется активность уровня сообщений.
SetTCPListenEnabled (bool val)
void
Включите или отключите прослушивание входящих TCP-соединений в WeaveMessageLayer .
SetUDPListenEnabled (bool val)
void
Включите или отключите прослушивание входящих сообщений UDP в WeaveMessageLayer .
SetUnsecuredConnectionListener ( ConnectionReceiveFunct newOnUnsecuredConnectionReceived, CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved, bool force, void *listenerState)
Shutdown (void)
Завершите работу WeaveMessageLayer .
TCPListenEnabled (void) const
bool
Проверьте, настроен ли WeaveMessageLayer для прослушивания входящих TCP-соединений.
UDPListenEnabled (void) const
bool
Проверьте, настроен ли WeaveMessageLayer для прослушивания входящих сообщений UDP.
UnsecuredListenEnabled (void) const
bool
Включите или отключите инициацию обмена UDP Weave из временного исходного порта UDP.

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

GetMaxWeavePayloadSize (const PacketBuffer *msgBuf, bool isUDP, uint32_t udpMTU)
uint32_t
Получите максимальный размер полезных данных Weave для конфигурации сообщения и предоставленный PacketBuffer.
GetPeerDescription (char *buf, size_t bufSize, uint64_t nodeId, const IPAddress *addr, uint16_t port, InterfaceId interfaceId, const WeaveConnection *con)
void
Создает строку, описывающую одноранговый узел и связанную с ним информацию об адресе/соединении.
GetPeerDescription (char *buf, size_t bufSize, const WeaveMessageInfo *msgInfo)
void
Создает строку, описывающую одноранговый узел, на основе информации, связанной с сообщением, полученным от однорангового узла.

Классы

nl:: Weave:: WeaveMessageLayer:: InitContext

Определение класса InitContext .

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

AcceptErrorFunct

void(* AcceptErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err)

Эта функция является обратным вызовом более высокого уровня для сообщения об ошибке во время обработки входящего TCP-соединения.

Подробности
Параметры
[in] msgLayer
Указатель на объект WeaveMessageLayer .
[in] err
WEAVE_ERROR обнаружен при обработке входящего TCP-соединения.

Обратный вызовRemovedFunct

void(* CallbackRemovedFunct)(void *listenerState)

Эта функция вызывается для удаления обратного вызова.

Подробности
Параметры
[in] listenerState
Указатель на объект состояния приложения.

СоединениеReceiveFunct

void(* ConnectionReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveConnection *con)

Эта функция является обратным вызовом более высокого уровня для обработки входящего TCP-соединения.

Подробности
Параметры
[in] msgLayer
Указатель на объект WeaveMessageLayer .
[in] con
Указатель на объект WeaveConnection .

Слой сообщенияActivityChangeHandlerFunct

void(* MessageLayerActivityChangeHandlerFunct)(bool messageLayerIsActive)

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

Уровень сообщений считается активным, если существует хотя бы один открытый обмен или ожидающий запрос на синхронизацию счетчика сообщений.

Подробности
Параметры
[in] messageLayerIsActive
Логическое значение, указывающее, активен ли уровень сообщений или нет.

СообщениеПолучитьФункция

void(* MessageReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveMessageInfo *msgInfo, PacketBuffer *payload)

Эта функция представляет собой обратный вызов более высокого уровня, который вызывается при получении сообщения Weave по UDP.

Подробности
Параметры
[in] msgLayer
Указатель на объект WeaveMessageLayer .
[in] msgInfo
Указатель на объект WeaveMessageInfo .
[in] payload
Указатель на сообщение PacketBuffer, содержащее полученный туннелированный пакет.

ПолучениеErrorFunct

void(* ReceiveErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err, const IPPacketInfo *pktInfo)

Эта функция представляет собой обратный вызов более высокого уровня, вызываемый при обнаружении ошибки.

Подробности
Параметры
[in] msgLayer
Указатель на объект WeaveMessageLayer .
[in] err
WEAVE_ERROR обнаружен при получении данных.
[in] pktInfo
Указатель на объект IPPacketInfo, доступный только для чтения.

Состояние

 State

Состояние WeaveMessageLayer .

Характеристики
kState_Initialized

Состояние, когда инициализируется WeaveMessageLayer .

kState_Initializing

Состояние, когда WeaveMessageLayer находится в процессе инициализации.

kState_NotInitialized

Состояние, когда WeaveMessageLayer не инициализирован.

TunneledMsgReceiveFunct

void(* TunneledMsgReceiveFunct)(WeaveMessageLayer *msgLayer, PacketBuffer *payload)

Эта функция представляет собой обратный вызов более высокого уровня, который вызывается при получении туннелированного пакета через локальный туннель UDP.

Подробности
Параметры
[in] msgLayer
Указатель на объект WeaveMessageLayer .
[in] payload
Указатель на сообщение PacketBuffer, содержащее полученный туннелированный пакет.

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

состояние приложения

void * AppState

Указатель на объект состояния конкретного приложения.

ExchangeMgr

WeaveExchangeManager * ExchangeMgr

[ТОЛЬКО ДЛЯ ЧТЕНИЯ] Связанный объект WeaveExchangeManager .

Состояние Фабрики

WeaveFabricState * FabricState

[ТОЛЬКО ДЛЯ ЧТЕНИЯ] Связанный объект WeaveFabricState .

ВходящийConIdleTimeout

uint32_t IncomingConIdleTimeout

Тайм-аут простоя по умолчанию (в миллисекундах) для входящих соединений.

инет

InetLayer * Inet

[ТОЛЬКО ДЛЯ ЧТЕНИЯ] Связанный объект InetLayer.

IsListening

bool IsListening

[ТОЛЬКО ДЛЯ ЧТЕНИЯ] True, если прослушивается входящие соединения/сообщения, в противном случае — false.

OnAcceptError

AcceptErrorFunct OnAcceptError

OnConnectionReceived

ConnectionReceiveFunct OnConnectionReceived

OnMessageReceived

MessageReceiveFunct OnMessageReceived

OnReceiveError

ReceiveErrorFunct OnReceiveError

ОнUDPTunneledMessageReceived

TunneledMsgReceiveFunct OnUDPTunneledMessageReceived

Менеджер по безопасности

WeaveSecurityManager * SecurityMgr

[ТОЛЬКО ДЛЯ ЧТЕНИЯ] Связанный объект WeaveSecurityManager .

Состояние

uint8_t State

[ТОЛЬКО ДЛЯ ЧТЕНИЯ] Состояние объекта WeaveMessageLayer .

Системный слой

System::Layer * SystemLayer

мдропмессаже

bool mDropMessage

Внутренний и только для отладки; Если установлено, WeaveMessageLayer удаляет сообщение и возвращает его.

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

Прослушиватель ClearUnsecuredConnectionListener

WEAVE_ERROR ClearUnsecuredConnectionListener(
  ConnectionReceiveFunct oldOnUnsecuredConnectionReceived,
  CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved
)

ЗакрытьКонечные точки

WEAVE_ERROR CloseEndpoints(
  void
)

Закройте все открытые конечные точки TCP и UDP.

Затем прервите все открытые WeaveConnections и закройте все открытые объекты WeaveConnectionTunnel .

См. также:
Неисправность() .

Создать туннель

WEAVE_ERROR CreateTunnel(
  WeaveConnectionTunnel **tunPtr,
  WeaveConnection & conOne,
  WeaveConnection & conTwo,
  uint32_t inactivityTimeoutMS
)

Создайте WeaveConnectionTunnel , соединив два указанных WeaveConnection.

При успешном создании TCPEndPoints, соответствующие объектам компонента WeaveConnection, передаются в WeaveConnectionTunnel , в противном случае WeaveConnections закрываются.

Подробности
Параметры
[out] tunPtr
Указатель на указатель объекта WeaveConnectionTunnel .
[in] conOne
Ссылка на первый объект WeaveConnection .
[in] conTwo
Ссылка на второй объект WeaveConnection .
[in] inactivityTimeoutMS
Максимальное время в миллисекундах, в течение которого туннель подключения Weave может простаивать.
Возвращаемые значения
WEAVE_NO_ERROR
об успешном создании WeaveConnectionTunnel .
WEAVE_ERROR_INCORRECT_STATE
если компоненты объектов WeaveConnection WeaveConnectionTunnel не находятся в правильном состоянии.
WEAVE_ERROR_NO_MEMORY
если новый объект WeaveConnectionTunnel не может быть создан.

Декодирование заголовка

WEAVE_ERROR DecodeHeader(
  PacketBuffer *msgBuf,
  WeaveMessageInfo *msgInfo,
  uint8_t **payloadStart
)

Декодируйте заголовок слоя сообщения Weave из полученного сообщения Weave.

Подробности
Параметры
[in] msgBuf
Указатель на объект PacketBuffer, содержащий сообщение Weave.
[in] msgInfo
Указатель на объект WeaveMessageInfo , который получит информацию о сообщении.
[out] payloadStart
Указатель на указатель на позицию в буфере сообщений после завершения декодирования.
Возвращаемые значения
WEAVE_NO_ERROR
При успешном декодировании заголовка сообщения.
WEAVE_ERROR_INVALID_MESSAGE_LENGTH
Если переданный буфер сообщений имеет недопустимую длину.
WEAVE_ERROR_UNSUPPORTED_MESSAGE_VERSION
Если версия формата заголовка сообщения Weave не поддерживается.

Кодировать сообщение

WEAVE_ERROR EncodeMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf,
  WeaveConnection *con,
  uint16_t maxLen,
  uint16_t reserve
)

Закодируйте заголовок WeaveMessageLayer в PacketBuffer.

Подробности
Параметры
[in] msgInfo
Указатель на объект WeaveMessageInfo , содержащий информацию о сообщении, которое необходимо закодировать.
[in] msgBuf
Указатель на объект PacketBuffer, который будет содержать сообщение Weave.
[in] con
Указатель на объект WeaveConnection .
[in] maxLen
Максимальная длина закодированного сообщения Weave.
[in] reserve
Зарезервированное пространство перед полезной нагрузкой для хранения заголовка сообщения Weave.
Возвращаемые значения
WEAVE_NO_ERROR
об успешном кодировании сообщения.
WEAVE_ERROR_UNSUPPORTED_MESSAGE_VERSION
если версия формата заголовка сообщения Weave не поддерживается.
WEAVE_ERROR_INVALID_MESSAGE_LENGTH
если длина полезных данных в буфере сообщений равна нулю.
WEAVE_ERROR_UNSUPPORTED_ENCRYPTION_TYPE
если тип шифрования в заголовке сообщения не поддерживается.
WEAVE_ERROR_MESSAGE_TOO_LONG
если закодированное сообщение будет длиннее запрошенного максимума.
WEAVE_ERROR_BUFFER_TOO_SMALL
если недостаточно места до или после полезных данных сообщения.
other
ошибки, генерируемые объектом состояния структуры при получении состояния сеанса.

Кодировать сообщение

WEAVE_ERROR EncodeMessage(
  const IPAddress & destAddr,
  uint16_t destPort,
  InterfaceId sendIntId,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *payload
)

Закодируйте заголовок уровня сообщений Weave в PacketBuffer.

Подробности
Параметры
[in] destAddr
IP-адрес назначения.
[in] destPort
Порт назначения.
[in] sendIntId
Интерфейс для отправки сообщения Weave.
[in] msgInfo
Указатель на объект WeaveMessageInfo .
[in] payload
Указатель на объект PacketBuffer, который будет содержать сообщение Weave.
Возвращаемые значения
WEAVE_NO_ERROR
при успешном кодировании сообщения Weave.
WEAVE_ERROR_UNSUPPORTED_MESSAGE_VERSION
если версия Weave Message не поддерживается.
WEAVE_ERROR_INVALID_MESSAGE_LENGTH
если длина полезных данных в буфере сообщений равна нулю.
WEAVE_ERROR_UNSUPPORTED_ENCRYPTION_TYPE
если тип шифрования не поддерживается.
WEAVE_ERROR_MESSAGE_TOO_LONG
если закодированное сообщение будет длиннее запрошенного максимума.
WEAVE_ERROR_BUFFER_TOO_SMALL
если недостаточно места до или после полезных данных сообщения.
other
ошибки, генерируемые объектом состояния структуры при получении состояния сеанса.

ЭфемерныйUDPPortEnabled

bool EphemeralUDPPortEnabled(
  void
) const 

Проверьте, следует ли отправлять локально инициированные обмены UDP Weave с эфемерного исходного порта UDP.

GetConnectionPoolStats

void GetConnectionPoolStats(
  nl::Weave::System::Stats::count_t & aOutInUse
) const 

Получите количество используемых WeaveConnections и размер пула.

Подробности
Параметры
[out] aOutInUse
Ссылка на size_t, в котором хранится количество используемых соединений.

IPv4ListenEnabled

bool IPv4ListenEnabled(
  void
) const 

Проверьте, настроен ли WeaveMessageLayer для прослушивания входящих сообщений через IPv4.

IPv6ListenEnabled

bool IPv6ListenEnabled(
  void
) const 

Проверьте, настроен ли WeaveMessageLayer для прослушивания входящих сообщений через IPv4.

Инициализировать

WEAVE_ERROR Init(
  InitContext *context
)

Инициализируйте объект слоя Weave Message.

Подробности
Параметры
[in] context
Указатель на объект InitContext .
Возвращаемые значения
WEAVE_NO_ERROR
при успешной инициализации.
WEAVE_ERROR_INVALID_ARGUMENT
если переданный объект InitContext имеет значение NULL.
WEAVE_ERROR_INCORRECT_STATE
если состояние объекта WeaveMessageLayer неверно.
other
ошибки, генерируемые на нижнем уровне Inet во время создания конечной точки.

ИсбаундтолокалIPv4Address

bool IsBoundToLocalIPv4Address(
  void
) const 

Проверьте, привязан ли WeaveMessageLayer к локальному адресу IPv4.

ИсбаундтолокалIPv6адрес

bool IsBoundToLocalIPv6Address(
  void
) const 

Проверьте, привязан ли WeaveMessageLayer к локальному IPv6-адресу.

Исмессажелайерактиве

bool IsMessageLayerActive(
  void
)

Новое соединение

WeaveConnection * NewConnection(
  void
)

Создайте новый объект WeaveConnection из пула.

Подробности
Возврат
указатель на вновь созданный объект WeaveConnection в случае успеха, в противном случае — NULL.

Новое соединениеТуннель

WeaveConnectionTunnel * NewConnectionTunnel(
  void
)

Создайте новый объект WeaveConnectionTunnel из пула.

Подробности
Возврат
указатель на вновь созданный объект WeaveConnectionTunnel в случае успеха, в противном случае — NULL.

Перекодировать сообщение

WEAVE_ERROR ReEncodeMessage(
  PacketBuffer *buf
)

Обновить конечные точки

WEAVE_ERROR RefreshEndpoints(
  void
)

Обновите конечные точки InetLayer на основе текущего состояния сетевых интерфейсов системы.

Подробности
Возвращаемые значения
WEAVE_NO_ERROR
при успешном обновлении конечных точек.
InetLayer
ошибки, основанные на вызовах создания конечных точек TCP/UDP.

Отправить сообщение повторно

WEAVE_ERROR ResendMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

Повторно отправьте закодированное сообщение Weave, используя базовую конечную точку UDP Inetlayer.

Подробности
Параметры
[in] msgInfo
Указатель на объект WeaveMessageInfo .
[in] payload
Указатель на объект PacketBuffer, содержащий закодированное сообщение Weave.
Возвращаемые значения
WEAVE_NO_ERROR
при успешной отправке сообщения на сетевой уровень.
errors
генерируется из конечной точки UDP нижнего уровня Inet во время отправки.

Отправить сообщение повторно

WEAVE_ERROR ResendMessage(
  const IPAddress & destAddr,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

Повторно отправьте закодированное сообщение Weave, используя базовую конечную точку UDP Inetlayer.

Подробности
Параметры
[in] destAddr
IP-адрес назначения.
[in] msgInfo
Указатель на объект WeaveMessageInfo .
[in] payload
Указатель на объект PacketBuffer, содержащий закодированное сообщение Weave.
Возвращаемые значения
WEAVE_NO_ERROR
при успешной отправке сообщения на сетевой уровень.
errors
генерируется из конечной точки UDP нижнего уровня Inet во время отправки.

Отправить сообщение повторно

WEAVE_ERROR ResendMessage(
  const IPAddress & destAddr,
  uint16_t destPort,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

Повторно отправьте закодированное сообщение Weave, используя базовую конечную точку UDP Inetlayer.

Подробности
Параметры
[in] destAddr
IP-адрес назначения.
[in] destPort
Порт назначения.
[in] msgInfo
Указатель на объект WeaveMessageInfo .
[in] payload
Указатель на объект PacketBuffer, содержащий закодированное сообщение Weave.
Возвращаемые значения
WEAVE_NO_ERROR
при успешной отправке сообщения на сетевой уровень.
errors
генерируется из конечной точки UDP нижнего уровня Inet во время отправки.

Отправить сообщение повторно

WEAVE_ERROR ResendMessage(
  const IPAddress & destAddr,
  uint16_t destPort,
  InterfaceId interfaceId,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

Повторно отправьте закодированное сообщение Weave, используя базовую конечную точку UDP Inetlayer.

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

Подробности
Параметры
[in] aDestAddr
IP-адрес назначения.
[in] destPort
Порт назначения.
[in] interfaceId
Интерфейс для отправки сообщения Weave.
[in] msgInfo
Указатель на объект WeaveMessageInfo .
[in] payload
Указатель на объект PacketBuffer, содержащий закодированное сообщение Weave.
Возвращаемые значения
WEAVE_NO_ERROR
при успешной отправке сообщения на сетевой уровень.
errors
генерируется из конечной точки UDP нижнего уровня Inet во время отправки.

Отправить сообщение

WEAVE_ERROR SendMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

Отправьте сообщение Weave, используя базовую конечную точку UDP Inetlayer после его кодирования.

Подробности
Параметры
[in] msgInfo
Указатель на объект WeaveMessageInfo , содержащий информацию об отправляемом сообщении.
[in] payload
Указатель на объект PacketBuffer, содержащий закодированное сообщение Weave.
Возвращаемые значения
WEAVE_NO_ERROR
при успешной отправке сообщения на сетевой уровень.
errors
генерируется из конечной точки UDP нижнего уровня Inet во время отправки.

Отправить сообщение

WEAVE_ERROR SendMessage(
  const IPAddress & destAddr,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

Отправьте сообщение Weave, используя базовую конечную точку UDP Inetlayer после его кодирования.

Примечание. – Используемый порт назначения — WEAVE_PORT . -Если адрес назначения не указан, попытайтесь определить его по идентификатору узла в заголовке сообщения. Потерпите неудачу, если это невозможно сделать.

— Если адрес назначения является адресом структуры для локальной структуры, а вызывающая сторона не указала идентификатор узла назначения, извлеките его из адреса назначения.

Подробности
Параметры
[in] destAddr
IP-адрес назначения.
[in] msgInfo
Указатель на объект WeaveMessageInfo , содержащий информацию об отправляемом сообщении.
[in] payload
Указатель на объект PacketBuffer, содержащий закодированное сообщение Weave.
Возвращаемые значения
WEAVE_NO_ERROR
при успешной отправке сообщения на сетевой уровень.
errors
генерируется из конечной точки UDP нижнего уровня Inet во время отправки.

Отправить сообщение

WEAVE_ERROR SendMessage(
  const IPAddress & destAddr,
  uint16_t destPort,
  InterfaceId sendIntfId,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

Отправьте сообщение Weave, используя базовую конечную точку UDP Inetlayer после его кодирования.

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

Подробности
Параметры
[in] aDestAddr
IP-адрес назначения.
[in] destPort
Порт назначения.
[in] sendIntfId
Интерфейс для отправки сообщения Weave.
[in] msgInfo
Указатель на объект WeaveMessageInfo , содержащий информацию об отправляемом сообщении.
[in] payload
Указатель на объект PacketBuffer, содержащий закодированное сообщение Weave.
Возвращаемые значения
WEAVE_NO_ERROR
при успешной отправке сообщения на сетевой уровень.
WEAVE_ERROR_INVALID_ADDRESS
если destAddr не указан или не может быть определен по идентификатору узла назначения.
errors
генерируется из конечной точки UDP нижнего уровня Inet во время отправки.

ОтправитьUDPTunneledMessage

WEAVE_ERROR SendUDPTunneledMessage(
  const IPAddress & destAddr,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

Функция для отправки туннелированного пакета через локальный туннель UDP.

Отправьте туннелированное сообщение данных IPv6 через UDP.

Подробности
Параметры
[in] msgInfo
Указатель на объект WeaveMessageInfo .
[in] destAddr
IP-адрес назначения туннеля UDP.
[in] msgBuf
Указатель на объект PacketBuffer, содержащий пакет для отправки.
Возвращаемые значения
WEAVE_NO_ERROR
при успешной отправке сообщения на сетевой уровень.
WEAVE_ERROR_INVALID_ADDRESS
если destAddr не указан или не может быть определен по идентификатору узла назначения.
errors
генерируется из конечной точки UDP нижнего уровня Inet во время отправки.

SetSignalMessageLayerActivityChanged

void SetSignalMessageLayerActivityChanged(
  MessageLayerActivityChangeHandlerFunct messageLayerActivityChangeHandler
)

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

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

  • меняется количество открытых бирж.
  • количество ожидающих запросов на синхронизацию счетчика сообщений изменяется с нуля как минимум до одного и обратно до нуля. Обработчик служит общим сигналом, указывающим, есть ли какие-либо текущие диалоги Weave или ожидающие ответы. Обработчик должен быть установлен после инициализации WeaveMessageLayer ; закрытие WeaveMessageLayer очистит текущий обработчик.

Подробности
Параметры
[in] messageLayerActivityChangeHandler
Указатель на функцию, которая будет вызываться при каждом изменении активности уровня сообщений.
Возвращаемые значения
None.

УстановитьTCPListenEnabled

void SetTCPListenEnabled(
  bool val
)

Включите или отключите прослушивание входящих TCP-соединений в WeaveMessageLayer .

ПРИМЕЧАНИЕ. RefreshEndpoints() необходимо вызывать после изменения состояния прослушивания TCP.

SetUDPListenEnabled

void SetUDPListenEnabled(
  bool val
)

Включите или отключите прослушивание входящих сообщений UDP в WeaveMessageLayer .

ПРИМЕЧАНИЕ. RefreshEndpoints() необходимо вызывать после изменения состояния прослушивания UDP.

SetUnsecuredConnectionListener

WEAVE_ERROR SetUnsecuredConnectionListener(
  ConnectionReceiveFunct newOnUnsecuredConnectionReceived,
  CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved,
  bool force,
  void *listenerState
)

Неисправность

WEAVE_ERROR Shutdown(
  void
)

Завершите работу WeaveMessageLayer .

Закройте все открытые конечные точки уровня Inet, сбросьте все обратные вызовы более высокого уровня, переменные-члены и объекты. Вызов Shutdown() завершает работу объекта WeaveMessageLayer .

TCPListenEnabled

bool TCPListenEnabled(
  void
) const 

Проверьте, настроен ли WeaveMessageLayer для прослушивания входящих TCP-соединений.

UDPListenEnabled

bool UDPListenEnabled(
  void
) const 

Проверьте, настроен ли WeaveMessageLayer для прослушивания входящих сообщений UDP.

Необеспеченный прослушивание включено

bool UnsecuredListenEnabled(
  void
) const 

Включите или отключите инициацию обмена UDP Weave из временного исходного порта UDP.

ПРИМЕЧАНИЕ. RefreshEndpoints() необходимо вызывать после изменения состояния временного порта. Проверьте, включено ли незащищенное прослушивание.

Слой Сообщения

 WeaveMessageLayer(
  void
)

Конструктор слоя Weave Message.

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

GetMaxWeavePayloadSize

uint32_t GetMaxWeavePayloadSize(
  const PacketBuffer *msgBuf,
  bool isUDP,
  uint32_t udpMTU
)

Получите максимальный размер полезных данных Weave для конфигурации сообщения и предоставленный PacketBuffer.

Максимальный возвращаемый размер полезных данных не будет превышать доступное пространство для полезных данных внутри предоставленного PacketBuffer.

Если сообщение представляет собой UDP, максимальный возвращаемый размер полезных данных не приведет к тому, что сообщение Weave не переполнит указанный UDP MTU.

Наконец, максимальный возвращенный размер полезных данных не приведет к тому, что сообщение Weave превысит максимальный размер сообщения Weave.

Подробности
Параметры
[in] msgBuf
Указатель на PacketBuffer, в который будут записаны полезные данные сообщения.
[in] isUDP
Истинно, если сообщение является сообщением UDP.
[in] udpMTU
Размер UDP MTU. Игнорируется, если isUDP имеет значение false.
Возврат
максимальный размер полезной нагрузки Weave.

GetPeerDescription

void GetPeerDescription(
  char *buf,
  size_t bufSize,
  uint64_t nodeId,
  const IPAddress *addr,
  uint16_t port,
  InterfaceId interfaceId,
  const WeaveConnection *con
)

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

Сгенерированная строка имеет следующий формат:

 ([]:%, con )

Подробности
Параметры
[in] buf
Указатель на буфер, в который должна быть записана строка. Предоставляемый буфер должен быть по крайней мере такого же размера, как kweavePeerDescription_MaxLength. Если задан меньший буфер, строка будет усечена, чтобы соответствовать размеру. Во всех случаях выходные данные будут содержать символ завершения NUL.
[in] bufSize
Размер буфера, на который указывает buf.
[in] nodeId
Идентификатор узла для печати.
[in] addr
Указатель на IP-адрес для печати; или NULL, если IP-адрес выводить не нужно.
[in] port
Номер IP-порта для печати. Номер порта не будет напечатан, если адрес имеет значение NULL.
[in] interfaceId
InterfaceId, идентифицирующий интерфейс для печати. Выходная строка будет содержать имя интерфейса, известное базовому сетевому стеку. Имя интерфейса не будет напечатано, если идентификатор интерфейса равен INET_NULL_INTERFACEID или если адрес имеет значение NULL.
[in] con
Указатель на объект WeaveConnection , идентификатор журнала которого должен быть напечатан; или NULL, если идентификатор соединения не должен печататься.

GetPeerDescription

void GetPeerDescription(
  char *buf,
  size_t bufSize,
  const WeaveMessageInfo *msgInfo
)

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

Подробности
Параметры
[in] buf
Указатель на буфер, в который должна быть записана строка. Предоставляемый буфер должен быть по крайней мере такого же размера, как kweavePeerDescription_MaxLength. Если задан меньший буфер, строка будет усечена, чтобы соответствовать размеру. Во всех случаях выходные данные будут содержать символ завершения NUL.
[in] bufSize
Размер буфера, на который указывает buf.
[in] msgInfo
Указатель на структуру WeaveMessageInfo , содержащую информацию о сообщении.