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)
|
typedefvoid(*
|
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:: |
自訂指令接收者傳回給傳送者的資料。 |
nl:: |
從 EventCallback 函式傳回至 CommandSender 物件的資料。 |
nl:: |
封裝要傳遞至 SendCommand() 的引數。 |
nl:: |
公開類型
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 )