нл:: Переплетение:: Профили:: DataManagement_Legacy:: ПротоколEngine
Это абстрактный класс.#include <src/lib/profiles/data-management/Legacy/ProtocolEngine.h>
Класс механизма протокола WDM.
Краткое содержание
Объект управления данными, клиент или издатель, имеет компонент механизма протокола и компонент менеджера данных. Этот абстрактный класс представляет общие функции механизма протокола.
Наследование
Прямые известные подклассы:nl::Weave::Profiles::DataManagement_Legacy::DMClient
nl::Weave::Profiles::DataManagement_Legacy::DMPublisher
Конструкторы и деструкторы | |
---|---|
ProtocolEngine (void) | |
~ProtocolEngine (void) |
Защищенные атрибуты | |
---|---|
mBindingTable [kBindingTableSize] | У ProtocolEngine есть таблица привязок, которая, если механизм будет отвечать за что-то помимо простого получения широковещательных уведомлений, вероятно, должна содержать хотя бы одну запись. |
mExchangeMgr | |
mResponseTimeout | uint32_t |
mTransactionTable [kTransactionTableSize] |
Общественные функции | |
---|---|
BindConfirm ( Binding *aBinding) | virtual WEAVE_ERROR Обработать подтверждение того, что запрос на привязку был успешно выполнен. |
BindConfirm ( Binding *aBinding, StatusReport & aReport) | virtual WEAVE_ERROR Обработка подтверждения того, что запрос на привязку не выполнен. |
BindRequest (const uint64_t & aPeerNodeId, uint8_t aTransport) | Запросите привязку, используя известный идентификатор однорангового узла и спецификатор транспорта. |
BindRequest (const uint64_t & aPeerNodeId) | Привяжитесь к известному узлу, используя транспорт по умолчанию. |
BindRequest ( nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode) | |
BindRequest ( WeaveConnection *aConnection) | Запросите привязку, используя активное соединение Weave. |
IncompleteIndication ( Binding *aBinding, StatusReport & aReport) | virtual void Обработка индикации того, что привязка не удалась. |
IncompleteIndication (const uint64_t & aPeerNodeId, StatusReport & aReport)=0 | virtual void Обработка индикации того, что привязка стала неполной. |
Init ( WeaveExchangeManager *aExchangeMgr) | virtual WEAVE_ERROR |
Init ( WeaveExchangeManager *aExchangeMgr, uint32_t aResponseTimeout) | virtual WEAVE_ERROR |
UnbindRequest (const uint64_t & aPeerNodeId) | void Запросить отмену привязки и ее удаление из таблицы привязок. |
UnbindRequest (const uint64_t & aPeerNodeId, WEAVE_ERROR aErr) | void Запросить отмену привязки и ее удаление из таблицы привязок. |
Защищенные функции | |
---|---|
Clear (void) | void |
ClearBindingTable (void) | void |
ClearTransactionTable (void) | void |
DequeueTransaction ( DMTransaction *aTransaction) | void |
EnqueueTransaction ( DMTransaction *aTransaction, Binding *aBinding) | |
EnqueueTransaction ( DMTransaction *aTransaction) | |
FailTransactions ( Binding *aBinding, StatusReport & aReport) | bool |
Finalize (void) | virtual void |
FinalizeBindingTable (void) | void |
FinalizeTransactionTable (void) | void |
FinalizeTransactions ( Binding *aBinding) | void |
FromExchangeCtx ( ExchangeContext *aExchangeCtx) | Binding * |
GetBinding (const uint64_t & aPeerNodeId) | Binding * |
NewBinding (void) | Binding * |
StartTransaction ( DMTransaction *aTransaction, Binding *aBinding) | |
StartTransaction ( DMTransaction *aTransaction) | |
StatusResponse ( ExchangeContext *aExchangeCtx, StatusReport & aStatus) |
Классы | |
---|---|
nl:: Weave:: Profiles:: DataManagement_Legacy:: ProtocolEngine:: DMTransaction |
Защищенные атрибуты
mBindingTable
Binding mBindingTable[kBindingTableSize]
У ProtocolEngine есть таблица привязок, которая, если механизм будет отвечать за что-то помимо простого получения широковещательных уведомлений, вероятно, должна содержать хотя бы одну запись.
Привязки обычно индексируются по идентификатору узла. Это означает, что каждый механизм может иметь только одну привязку к данной конечной точке службы.
В спецификации WDM есть понятие «привязки по умолчанию», то есть куда отправляются сообщения, если не указан явный пункт назначения. В основном это будет использоваться в очень простых устройствах с одной привязкой или небольшим количеством привязок, а для других целей это будет просто первая сформированная привязка.
mExchangeMgr
WeaveExchangeManager * mExchangeMgr
mResponseTimeout
uint32_t mResponseTimeout
мтранзакционтабле
TransactionTableEntry mTransactionTable[kTransactionTableSize]
Общественные функции
ПривязатьПодтвердить
virtual WEAVE_ERROR BindConfirm( Binding *aBinding )
Обработка подтверждения того, что запрос на привязку был успешно выполнен.
После завершения привязки механизм протокола просматривает таблицу транзакций и запускает все транзакции, зависящие от этой привязки.
Подробности | |||
---|---|---|---|
Параметры |
| ||
Возврат | WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR, отражающий невозможность начать транзакцию. |
ПривязатьПодтвердить
virtual WEAVE_ERROR BindConfirm( Binding *aBinding, StatusReport & aReport )
Обработка подтверждения того, что запрос на привязку не выполнен.
При сбое запроса на привязку механизм протокола должен просмотреть таблицу транзакций и отклонить все транзакции, зависящие от привязки.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возврат |
BindRequest
WEAVE_ERROR BindRequest( const uint64_t & aPeerNodeId, uint8_t aTransport )
Запросите привязку, используя известный идентификатор однорангового узла и спецификатор транспорта.
Учитывая идентификатор однорангового узла и спецификацию транспорта, этот запрос устанавливает привязку к этому одноранговому узлу. Бидинг потребует дополнительного завершения ТОЛЬКО если транспортом является TCP. Если привязка к одноранговому узлу уже существует, она используется повторно.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возврат | WEAVE_NO_ERROR в случае успеха или WEAVE_ERROR_NO_MEMORY , если таблица привязки заполнена. В противном случае верните WEAVE_ERROR , отражающий неудачную инициализацию привязки. |
Вариант WeaveTransport
BindRequest
WEAVE_ERROR BindRequest( const uint64_t & aPeerNodeId )
Привяжитесь к известному узлу, используя транспорт по умолчанию.
Подробности | |||
---|---|---|---|
Параметры |
| ||
Возврат | WEAVE_NO_ERROR В случае успеха. В противном случае верните WEAVE_ERROR , отражающий сбой операции привязки. |
BindRequest
WEAVE_ERROR BindRequest( nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode )
BindRequest
WEAVE_ERROR BindRequest( WeaveConnection *aConnection )
Запросите привязку, используя активное соединение Weave.
Привязку также можно установить с использованием существующего открытого соединения. Обратите внимание, что привязки, установленные таким образом, не требуют дополнительного завершения.
Подробности | |||
---|---|---|---|
Параметры |
| ||
Возврат | WEAVE_NO_ERROR в случае успеха или WEAVE_ERROR_NO_MEMORY , если таблица привязки заполнена. В противном случае верните ошибку, отражающую неудачную инициализацию привязки. |
Неполная индикация
virtual void IncompleteIndication( Binding *aBinding, StatusReport & aReport )
Обработка индикации того, что привязка не удалась.
Когда привязка становится неполной, т. е. когда соединение закрывается для привязки TCP, механизм протокола должен отклонять любые транзакции, которые от него зависят, включая вызов их обработчиков состояния. Кроме того, индикация неполноты передается любому объекту суперкласса, реализующему альтернативную форму этого метода, которая принимает идентификатор узла.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
Неполная индикация
virtual void IncompleteIndication( const uint64_t & aPeerNodeId, StatusReport & aReport )=0
Обработка индикации того, что привязка стала неполной.
Более высокие уровни, которые хотят получать информацию об ошибке привязки, должны использовать этот метод, который просто передает идентификатор узла вместе с отчетом о состоянии. Фактически, поскольку этот метод является виртуальной пустотой, любой подкласс DMClient или DMPublisher должен предоставлять реализацию.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
Инициализировать
virtual WEAVE_ERROR Init( WeaveExchangeManager *aExchangeMgr )
Инициализировать
virtual WEAVE_ERROR Init( WeaveExchangeManager *aExchangeMgr, uint32_t aResponseTimeout )
ПротоколEngine
ProtocolEngine( void )
Отвязать запрос
void UnbindRequest( const uint64_t & aPeerNodeId )
Запросить отмену привязки и ее удаление из таблицы привязок.
Когда привязка «несвязана», все транзакции, которые в данный момент от нее зависят, также должны быть удалены. Этот метод автоматически завершает все транзакции с этой привязкой.
Подробности | |||
---|---|---|---|
Параметры |
|
UnbindRequest (const uint64_t, WEAVE_ERROR)
Отвязать запрос
void UnbindRequest( const uint64_t & aPeerNodeId, WEAVE_ERROR aErr )
Запросить отмену привязки и ее удаление из таблицы привязок.
Когда привязка «несвязана», все транзакции, которые в данный момент от нее зависят, также должны быть удалены. Этот метод автоматически завершает все транзакции с этой привязкой.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
UnbindRequest (const uint64_t)
~Протокольный движок
virtual ~ProtocolEngine( void )
Защищенные функции
Прозрачный
void Clear( void )
ClearBindingTable
void ClearBindingTable( void )
Очиститьтранзакционтабле
void ClearTransactionTable( void )
Удаление транзакции из очереди
void DequeueTransaction( DMTransaction *aTransaction )
EnqueueTransaction
WEAVE_ERROR EnqueueTransaction( DMTransaction *aTransaction, Binding *aBinding )
EnqueueTransaction
WEAVE_ERROR EnqueueTransaction( DMTransaction *aTransaction )
Фэйлтранзакции
bool FailTransactions( Binding *aBinding, StatusReport & aReport )
Завершить
virtual void Finalize( void )
FinalizeBindingTable
void FinalizeBindingTable( void )
Финализетранзакционтабле
void FinalizeTransactionTable( void )
Финализетранзакции
void FinalizeTransactions( Binding *aBinding )
Фромексчанжекткс
Binding * FromExchangeCtx( ExchangeContext *aExchangeCtx )
Получить привязку
Binding * GetBinding( const uint64_t & aPeerNodeId )
Новая привязка
Binding * NewBinding( void )
Старттранзакция
WEAVE_ERROR StartTransaction( DMTransaction *aTransaction, Binding *aBinding )
Старттранзакция
WEAVE_ERROR StartTransaction( DMTransaction *aTransaction )
СтатусОтвет
WEAVE_ERROR StatusResponse( ExchangeContext *aExchangeCtx, StatusReport & aStatus )