nl::Weave::Profiles::DataManagement_Current::CommandSender

#include <src/lib/profiles/data-management/Current/CommandSender.h>

摘要

注意:本課程封裝了傳送指令的通訊協定詳細資料,簡化應用程式的相關機制。應用程式會提供一個 PacketBuffer,其中包含指令的酬載,以及一組可改變命令標頭內容內容的選用引數,以及指令的行為。 此包裝函式處理命令處理的實用性確實有限,主要是因為資安驗證和資料序列化/去序列化涉及的複雜性/彈性。

指令驗證的詳細資料仍待定

此類別也可協助應用程式推斷相關 TraitDataSink 內的資料是否已能反映通訊的副作用 (根據指令回應提供的版本)。應用程式負責管理該物件的儲存空間。

編織裝訂

此類別的物件可使用 Weave Binding 初始化,此繫結將做為傳送指令的預設繫結。使用者也可以為每個 SendCommand() 呼叫提供繫結,藉此覆寫預設的繫結。您不需要提供預設的「繫結」,但提供給 CommandSender 的所有繫結都必須已完成初始化。

EventCallback

如果使用者希望更新指令傳送後發生的事件 (請參閱下方的「API 事件」),則必須定義這種類型的函式。如果使用者不關心指令傳送後會發生什麼事,則可輸入 NULL。

API 事件

以下是傳送指令後可能的結果:

CommunicationError

形成或傳送 Command,或是等待回應時發生錯誤。等待回應時發生的錯誤,例如重大錯誤或未預期關閉的連線。錯誤原因請參閱 EventCallback 處理常式的 InEventParam 引數。

InProgressReceived

收件者可以傳送「進行中」訊息,表示已接收 Command,但尚未完成。完成後,收件者就會傳送 Response 或 StatusReport。傳送「進行中」不必輸入訊息

StatusReportReceived

收到 StatusReport 的訊息,表示處理指令時發生錯誤。您可以透過 InEventParam 存取 StatusReport。

ResponseReceived

接收回應代表 Command 收件者已成功處理指令。回應可能含有酬載,也可能沒有。如果應用程式想保留封包緩衝區,可能會呼叫 ExchangeContext::AddRef() 增加參照計數。

公開類型

EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam) typedef
void(*
EventType 列舉

公開屬性

mAppState = NULL
void *
mSyncronizedTraitState = NULL

公開的靜態函式

DefaultEventHandler(void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void

公開函式

Close(bool aAbortNow)
void
Init(nl::Weave::Binding *aBinding, const EventCallback aEventCallback, void *const aAppState)
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, ResourceIdentifier & aResourceId, uint32_t aProfileId, uint32_t aCommandType)
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, SendParams & aSendParams)
SetSynchronizedTraitState(SynchronizedTraitState *aTraitState)
void

Structs

nl::Weave::Profiles::DataManagement_Current::CommandSender::InEventParam

自訂指令接收者傳回給傳送者的資料。

nl::Weave::Profiles::DataManagement_Current::CommandSender::OutEventParam

從 EventCallback 函式傳回至 CommandSender 物件的資料。

nl::Weave::Profiles::DataManagement_Current::CommandSender::SendParams

封裝要傳遞至 SendCommand() 的引數。

nl::Weave::Profiles::DataManagement_Current::CommandSender::SynchronizedTraitState

公開類型

EventCallback

void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)

EventType

 EventType

公開屬性

mAppState

void * mAppState = NULL

mSyncronizedTraitState

SynchronizedTraitState * mSyncronizedTraitState = NULL

公開的靜態函式

DefaultEventHandler

void DefaultEventHandler(
  void *aAppState,
  EventType aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

公開函式

關閉

void Close(
  bool aAbortNow
)

Init

WEAVE_ERROR Init(
  nl::Weave::Binding *aBinding,
  const EventCallback aEventCallback,
  void *const aAppState
)

SendCommand

WEAVE_ERROR SendCommand(
  nl::Weave::PacketBuffer *aPayload,
  nl::Weave::Binding *aBinding,
  ResourceIdentifier & aResourceId,
  uint32_t aProfileId,
  uint32_t aCommandType
)

SendCommand

WEAVE_ERROR SendCommand(
  nl::Weave::PacketBuffer *aPayload,
  nl::Weave::Binding *aBinding,
  SendParams & aSendParams
)

SetSynchronizedTraitState

void SetSynchronizedTraitState(
  SynchronizedTraitState *aTraitState
)