нл:: Переплетение:: Связывание
#include <src/lib/core/WeaveBinding.h>
Захватывает предполагаемую цель связи Weave и связанную с ней информацию о конфигурации.
Краткое содержание
Объект Binding идентифицирует предполагаемую цель связи Weave (также известную как «одноранговый узел»), а также набор параметров конфигурации, описывающих, как должна происходить связь с одноранговым узлом. Привязки не зависят от протокола приложения, используемого между двумя сторонами. По существу, они фиксируют «кто» и «как» коммуникации, но не «что».
Приложения должны настроить привязку с параметрами, соответствующими типу желаемого канала связи. Привязки обеспечивают поддержку ряда сетевых транспортов, включая TCP, UDP, UDP с Weave Reliable Messaging и Weave over BLE (WoBLE). Приложения также могут запрашивать использование определенных механизмов безопасности для защиты сообщений, передаваемых между сторонами. К ним относятся сеансы CASE и PASE, а также ключи групп приложений. Интерфейс для настройки привязки использует декларативный стиль API, который позволяет приложениям простыми словами заявлять свои требования к связи.
Дополнительную информацию см. в документации по Binding::Configuration .
Подготовка
Прежде чем произойдет обмен данными, привязка должна быть «подготовлена». Процесс подготовки привязки включает в себя установление необходимого состояния для осуществления связи. Это может включать в себя такие вещи, как определение сетевого адреса узла, установление сетевого подключения и согласование ключей безопасности. После настройки приложением Binding берет на себя все шаги, необходимые для подготовки к обмену данными, возвращаясь к приложению после завершения процесса. Таким образом, привязки скрывают механизм взаимодействия, позволяя приложениям сосредоточиться на взаимодействиях высокого уровня.
Коммуникация
Как только привязка подготовлена, она становится готовой к использованию. В этом состоянии приложения (или, чаще, код уровня протокола, работающий от имени приложения) запрашивают привязку для выделения контекста обмена Weave. Результирующий контекст обмена предварительно настроен для связи, что позволяет приложению немедленно инициировать обмен Weave с партнером. Приложение может продолжать запрашивать контексты обмена у Привязки до тех пор, пока Привязка не будет закрыта или какое-либо событие, например, сбой в сети, не завершит базовый канал связи.
Привязка изменений состояния
В ходе использования привязка будет доставлять события API приложению, информируя его об изменениях в состоянии привязки . Например, если подготовка прошла успешно, приложение получит событие, информирующее его о том, что привязка готова к использованию. Аналогичным образом, если базовый канал связи выходит из строя, приложению доставляется событие, информирующее его о том, что привязка больше не находится в состоянии готовности.
События API доставляются в приложение через функцию обратного вызова событий, предоставляемую при выделении привязки .
Срок действия привязки
Привязка учитывает количество ссылок, что позволяет совместно использовать несколько компонентов программного обеспечения. При выделении привязки создается одна ссылка на привязку. Приложение несет ответственность за выпуск этой ссылки в какой-то момент в будущем, чтобы привязка была свободна для последующего повторного использования.
Когда приложение завершает работу с привязкой, оно может вызвать Close() для привязки. Это освобождает ссылку приложения на привязку и блокирует всю дальнейшую доставку событий API. Когда последняя ссылка на привязку освобождается, она автоматически закрывается.
Публичные типы | |
---|---|
@23 { | перечисление |
EventCallback )(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) | определение типаvoid(* |
EventType { | перечисление |
State | перечисление |
Публичные атрибуты | |
---|---|
AppState | void * |
Общественные функции | |
---|---|
AddRef (void) | void Зарезервируйте ссылку на объект привязки. |
AdjustResponseTimeout ( ExchangeContext *apExchangeContext) const | Перенастройте существующий контекст Exchange, чтобы настроить время ожидания ответа. |
AllocateRightSizedBuffer (PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize) | |
BeginConfiguration () | Это процесс настройки Binding . |
CanBePrepared (void) const | bool |
Close (void) | void Закройте объект привязки и освободите ссылку. |
GetConnection () const | Получите объект соединения Weave, связанный с привязкой. |
GetDefaultResponseTimeout () const | uint32_t Получите тайм-аут ответа обмена по умолчанию, который будет использоваться при общении с партнером. |
GetDefaultWRMPConfig (void) const | const WRMPConfig & Получите конфигурацию WRMP по умолчанию, которая будет использоваться при общении с партнером. |
GetEncryptionType (void) const | uint8_t Получите тип шифрования сообщения, который будет использоваться при шифровании сообщений, поступающих и исходящих от однорангового узла. |
GetEventCallback () const | EventCallback Получите функцию, которая будет вызываться при возникновении события API для Binding . |
GetExchangeManager () const | |
GetKeyId (void) const | uint32_t Получите идентификатор ключа шифрования сообщения, который будет использоваться при шифровании сообщений к одноранговому узлу или от него. |
GetLogId (void) const | uint16_t Получите уникальный идентификатор для привязки. |
GetMaxWeavePayloadSize (const System::PacketBuffer *msgBuf) | uint32_t Получите максимальный размер полезных данных Weave, который может поместиться внутри предоставленного PacketBuffer. |
GetPeerDescription (char *buf, uint32_t bufSize) const | void Создает строку, описывающую одноранговый узел и связанную с ним информацию об адресе/соединении. |
GetPeerIPAddress ( nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId) const | void Получите информацию об IP-адресе узла, если таковая имеется. |
GetPeerNodeId (void) const | uint64_t Получите идентификатор узла узла привязки. |
GetProtocolLayerCallback (EventCallback & callback, void *& state) const | void |
GetState (void) const | State Получить текущее состояние привязки. |
IsAuthenticMessageFromPeer (const WeaveMessageInfo *msgInfo) | bool Определите, пришло ли конкретное входящее сообщение от настроенного узла и прошло ли соответствующую проверку подлинности. |
IsConnectionTransport () const | bool |
IsPreparing (void) const | bool |
IsReady (void) const | bool |
IsUDPTransport () const | bool |
IsUnreliableUDPTransport () const | bool |
IsWRMTransport () const | bool |
NewExchangeContext ( ExchangeContext *& appExchangeContext) | Выделите новый контекст обмена для связи с одноранговым узлом, который является целью привязки. |
Release (void) | void Освободите ссылку на объект привязки. |
RequestPrepare () | Запросите приложение для настройки и подготовки Binding . |
Reset (void) | void Верните привязку в ненастроенное состояние. |
SetDefaultResponseTimeout (uint32_t msec) | void Установите тайм-аут ответа обмена по умолчанию, который будет использоваться при общении с партнером. |
SetDefaultWRMPConfig (const WRMPConfig & wrmpConfig) | void Установите конфигурацию WRMP по умолчанию, которая будет использоваться при общении с партнером. |
SetEventCallback (EventCallback aEventCallback) | void Установите определяемую приложением функцию, которая будет вызываться при возникновении события API для Binding . |
SetProtocolLayerCallback (EventCallback callback, void *state) | void Установите функцию обратного вызова события для кода уровня протокола с помощью привязки от имени приложения. |
Публичные статические функции | |
---|---|
DefaultEventHandler (void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam) | void Обработчик по умолчанию для привязки событий API. |
Классы | |
---|---|
nl:: Weave:: Привязка:: Конфигурация | Предоставляет интерфейс в декларативном стиле для настройки и подготовки объекта Binding . |
Структуры | |
---|---|
nl:: Weave:: Binding:: InEventParam | Входные параметры для события Binding API. |
nl:: Weave:: Binding:: OutEventParam | Выходные параметры для события Binding API. |
Публичные типы
@23
@23
Характеристики | |
---|---|
kGetPeerDescription_MaxLength | Максимальная длина строки (включая символ NUL), возвращаемой GetPeerDescription() . |
Обратный вызов события
void(* EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
тип события
EventType
Состояние
State
Публичные атрибуты
состояние приложения
void * AppState
Общественные функции
ДобавитьСсылку
void AddRef( void )
Зарезервируйте ссылку на объект привязки.
НастроитьResponseTimeout
WEAVE_ERROR AdjustResponseTimeout( ExchangeContext *apExchangeContext ) const
Перенастройте существующий контекст Exchange, чтобы настроить время ожидания ответа.
Подробности | |||
---|---|---|---|
Параметры |
|
ВыделитьRightSizedBuffer
WEAVE_ERROR AllocateRightSizedBuffer( PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize )
Началоконфигурации
Configuration BeginConfiguration()
Это процесс настройки Binding .
Приложения должны вызвать BeginConfiguration() , чтобы настроить привязку перед ее подготовкой к обмену данными с одноранговым узлом.
Подробности | |
---|---|
Возврат | Объект Binding::Configuration , который можно использовать для настройки привязки. |
CanBePrepared
bool CanBePrepared( void ) const
Закрывать
void Close( void )
Закройте объект привязки и освободите ссылку.
При вызове этот метод переводит привязку в закрытое состояние. Все текущие действия по подготовке привязки отменяются, а все внешние коммуникационные ресурсы, удерживаемые привязкой, освобождаются.
Вызов Close() уменьшает счетчик ссылок, связанный с привязкой, освобождая объект, если счетчик ссылок становится равным нулю.
GetConnection
WeaveConnection * GetConnection() const
Получите объект соединения Weave, связанный с привязкой.
Подробности | |
---|---|
Возврат | Указатель на объект WeaveConnection или NULL, если с привязкой не связано соединение. |
GetDefaultResponseTimeout
uint32_t GetDefaultResponseTimeout() const
Получите тайм-аут ответа обмена по умолчанию, который будет использоваться при общении с партнером.
Подробности | |
---|---|
Возврат | Таймаут ответа в мс. |
GetDefaultWRMPConfig
const WRMPConfig & GetDefaultWRMPConfig( void ) const
Получите конфигурацию WRMP по умолчанию, которая будет использоваться при общении с партнером.
Подробности | |
---|---|
Возврат | Ссылка на структуру WRMPConfig , содержащую значения конфигурации по умолчанию. |
GetEncryptionType
uint8_t GetEncryptionType( void ) const
Получите тип шифрования сообщения, который будет использоваться при шифровании сообщений, поступающих и исходящих от однорангового узла.
GetEventCallback
EventCallback GetEventCallback() const
Получите функцию, которая будет вызываться при возникновении события API для Binding .
Подробности | |
---|---|
Возврат | Указатель на функцию обратного вызова. |
GetExchangeManager
WeaveExchangeManager * GetExchangeManager() const
GetKeyId
uint32_t GetKeyId( void ) const
Получите идентификатор ключа шифрования сообщения, который будет использоваться при шифровании сообщений к одноранговому узлу или от него.
GetLogId
uint16_t GetLogId( void ) const
Получите уникальный идентификатор для привязки.
GetMaxWeavePayloadSize
uint32_t GetMaxWeavePayloadSize( const System::PacketBuffer *msgBuf )
Получите максимальный размер полезных данных Weave, который может поместиться внутри предоставленного PacketBuffer.
Для UDP, включая UDP с WRM, максимальный возвращаемый размер полезных данных гарантирует, что результирующее сообщение Weave не переполнит настроенный UDP MTU.
Кроме того, этот метод гарантирует, что полезная нагрузка Weave не переполнит предоставленный PacketBuffer.
Подробности | |||
---|---|---|---|
Параметры |
| ||
Возврат | Максимальный размер полезной нагрузки Weave. |
GetPeerDescription
void GetPeerDescription( char *buf, uint32_t bufSize ) const
Создает строку, описывающую одноранговый узел и связанную с ним информацию об адресе/соединении.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
ПолучитьPeerIP-адрес
void GetPeerIPAddress( nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId ) const
Получите информацию об IP-адресе узла, если таковая имеется.
Доступность информации об IP-адресе узла зависит от состояния и конфигурации привязки. Информация об IP-адресе доступна только при использовании транспорта на основе IP (TCP, UDP или UDP с WRMP). До начала подготовки информация об адресе доступна только в том случае, если она была явно задана приложением при настройке. На этапе подготовки информация об адресе доступна после завершения подготовки адреса (например, после завершения разрешения DNS). После того как привязка готова, информация об адресе остается доступной до тех пор, пока привязка не будет сброшена.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
Получите идентификатор узла узла привязки.
Действует только после подготовки объекта привязки.
Подробности | |
---|---|
Возврат | Идентификатор узла Weave узла |
Обратный вызов GetProtocolLayer
void GetProtocolLayerCallback( EventCallback & callback, void *& state ) const
GetState
State GetState( void ) const
Получить текущее состояние привязки.
Подробности | |
---|---|
Возврат | Обязательное состояние. |
IsAuthenticMessageFromPeer
bool IsAuthenticMessageFromPeer( const WeaveMessageInfo *msgInfo )
Определите, пришло ли конкретное входящее сообщение от настроенного узла и прошло ли соответствующую проверку подлинности.
Этот метод подтверждает следующие сведения о данном сообщении:
- Сообщение исходило от однорангового узла привязки.
- Сообщение было получено по тому же типу транспорта, что и привязка. Если сообщение было получено через соединение, метод также подтверждает, что сообщение было получено через точное соединение, связанное с привязкой.
- Ключ шифрования и тип, используемые для шифрования сообщения, соответствуют тем, которые настроены в привязке. Для привязок, настроенных без использования безопасности, метод подтверждает, что входящее сообщение НЕ зашифровано.
Этот метод предназначен для использования в таких протоколах, как WDM, где одноранговые узлы могут спонтанно инициировать обмен обратно с локальным узлом после первоначального обмена от узла к одноранговому узлу. В таких случаях метод позволяет локальному узлу подтвердить, что входящее незапрошенное сообщение было отправлено соответствующим узлом. (Конечно, для привязок, настроенных без использования шифрования сообщений, это утверждение не имеет никакой ценности с точки зрения безопасности. Оно просто подтверждает, что идентификатор узла отправителя и типы транспорта совпадают.)
Обратите внимание: если привязка не находится в состоянии Ready, этот метод всегда будет возвращать false.
Подробности | |||
---|---|---|---|
Параметры |
| ||
Возврат | Истинно, если сообщение действительно получено от узла. |
IsConnectionTransport
bool IsConnectionTransport() const
IsPreparing
bool IsPreparing( void ) const
Подробности | |
---|---|
Возврат | Истинно, если привязка в данный момент готовится. |
Готово
bool IsReady( void ) const
Подробности | |
---|---|
Возврат | Истинно, если привязка находится в состоянии готовности. |
ИсУДПТранспорт
bool IsUDPTransport() const
IsUnreliableUDPTransport
bool IsUnreliableUDPTransport() const
IsWRMTransport
bool IsWRMTransport() const
НовыйExchangeContext
WEAVE_ERROR NewExchangeContext( ExchangeContext *& appExchangeContext )
Выделите новый контекст обмена для связи с одноранговым узлом, который является целью привязки.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|
Выпускать
void Release( void )
Освободите ссылку на объект привязки.
Если ссылок на объект привязки больше нет, привязка закрывается и освобождается.
ЗапросПодготовка
WEAVE_ERROR RequestPrepare()
Запросите приложение для настройки и подготовки Binding .
Код уровня протокола может использовать этот метод для привязки , которая не была настроена или произошла ошибка, чтобы инициировать событие для приложения (kEvent_PrepareRequested), запрашивающее настройку и подготовку привязки к использованию.
Этот метод можно вызвать только для привязок в состояниях NotConfigured или Failed.
Если приложение не поддерживает настройку/подготовку привязок по требованию, метод завершится с ошибкой WEAVE_ERROR_NOT_IMPLEMENTED.
Перезагрузить
void Reset( void )
Верните привязку в ненастроенное состояние.
При вызове Reset() все выполняемые действия по подготовке привязки отменяются, а все внешние коммуникационные ресурсы, удерживаемые привязкой, освобождаются. Reset() переводит привязку в ненастроенное состояние, после чего ее можно настроить и подготовить снова.
Reset() не изменяет счетчик ссылок привязки.
SetDefaultResponseTimeout
void SetDefaultResponseTimeout( uint32_t msec )
Установите тайм-аут ответа обмена по умолчанию, который будет использоваться при общении с партнером.
Подробности | |||
---|---|---|---|
Параметры |
|
Установить по умолчаниюWRMPConfig
void SetDefaultWRMPConfig( const WRMPConfig & wrmpConfig )
Установите конфигурацию WRMP по умолчанию, которая будет использоваться при общении с партнером.
Подробности | |||
---|---|---|---|
Параметры |
|
SetEventCallback
void SetEventCallback( EventCallback aEventCallback )
Установите определяемую приложением функцию, которая будет вызываться при возникновении события API для Binding .
Подробности | |||
---|---|---|---|
Параметры |
|
SetProtocolLayerОбратный вызов
void SetProtocolLayerCallback( EventCallback callback, void *state )
Установите функцию обратного вызова события для кода уровня протокола с помощью привязки от имени приложения.
Эта функция будет вызываться в дополнение к функции обратного вызова, определяемой приложением, когда для Binding происходят события API.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
Публичные статические функции
Обработчик событий по умолчанию
void DefaultEventHandler( void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
Обработчик по умолчанию для привязки событий API.
Приложения должны вызывать этот метод для любых событий API, которые они не распознают или не обрабатывают. Предоставляемые параметры должны быть такими же, как те, которые передаются привязкой к функции обработчика событий приложения.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
|