nl:: Weave:: Profiles:: DataManagement_Current:: CommandSender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
Podsumowanie
Uwaga: ta klasa zawiera szczegóły protokołu wysyłania poleceń, co upraszcza działanie aplikacji. Aplikacja udostępnia pakiet PacketBuffer zawierający ładunek polecenia, a także opcjonalny zestaw argumentów, które zmieniają zawartość nagłówka polecenia oraz działanie polecenia. Przydatność tego opakowania w przypadku obsługi poleceń jest rzeczywiście ograniczona, głównie ze względu na złożoność/elastyczność związane z weryfikacją zabezpieczeń oraz serializacją/deserializacją danych.
Szczegóły weryfikacji polecenia są nadal do ustalenia
Ta klasa pomaga aplikacjom określić, czy dane w powiązanym obiekcie TraitDataSink są zgodne z efektami ubocznymi polecenia (na podstawie wersji podanej w odpowiedzi polecenia). Aplikacja odpowiada za zarządzanie przechowywaniem tego obiektu.
Wiązanie splotowe
Obiekt tej klasy można zainicjować za pomocą wiązania Weave, które będzie używane jako domyślne Wiązanie używane do wysyłania poleceń. Użytkownik może też określić Wiązanie z każdym wywołaniem funkcji SendCommand(), które zastąpi domyślne Binding. Nie musisz podawać domyślnego Binding, ale wszystkie powiązania podane w CommandSender muszą już być zainicjowane.
EventCallback
Jeśli użytkownik chce otrzymywać informacje o zdarzeniach, które mają miejsce po wysłaniu polecenia, musi zdefiniować funkcję tego typu (patrz „Zdarzenia interfejsu API” poniżej). Ta wartość może mieć wartość NULL, jeśli użytkownik nie interesuje się, co dzieje się po wysłaniu polecenia.
Zdarzenia API
Po wysłaniu polecenia możliwe są następujące zdarzenia:
CommunicationError
Podczas tworzenia lub wysyłania polecenia albo oczekiwania na odpowiedź wystąpił błąd. Przykładami błędów, które mogą wystąpić podczas oczekiwania na odpowiedź, są kluczowe błędy lub nieoczekiwane zakończenie połączenia. Przyczyna błędu będzie podana w argumencie InEventParam modułu obsługi EventCallback.
InProgressReceived
Odbiorca może wysłać wiadomość o stanie „w toku”, która oznacza, że polecenie zostało odebrane, ale nie zostało jeszcze ukończone. Gdy skończysz, odbiorca wyśle odpowiedź lub raport stanu. Wysyłanie wiadomości o stanie „w toku” nie jest wymagane.
StatusReportReceived
Otrzymanie raportu StatusReport oznacza, że podczas przetwarzania polecenia wystąpił błąd. Raport StatusReport można uzyskać przez InEventParam.
ResponseReceived
Otrzymanie odpowiedzi oznacza, że odbiorca polecenia prawidłowo obsługuje polecenie. Odpowiedź może zawierać ładunek, ale nie musi. Jeśli aplikacja chce zachować bufor pakietów, może wywołać metodę ExchangeContext::AddRef() w celu zwiększenia liczby odwołań.
Typy publiczne |
|
---|---|
EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
|
typedefvoid(*
|
EventType
|
enum | typ wyliczeniowy |
Atrybuty publiczne |
|
---|---|
mAppState = NULL
|
void *
|
mSyncronizedTraitState = NULL
|
Publiczne funkcje statyczne |
|
---|---|
DefaultEventHandler(void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
Funkcje publiczne |
|
---|---|
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
|
Konstrukcja |
|
---|---|
nl:: |
Dane zwrócone nadawcy przez odbiorcę niestandardowego polecenia. |
nl:: |
Dane zwrócone do obiektu CommandSender z funkcji EventCallback. |
nl:: |
Obejmuje argumenty, które mają zostać przekazane do metody SendCommand(). |
nl:: |
Typy publiczne
EventCallback
void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
EventType
EventType
Atrybuty publiczne
mAppState
void * mAppState = NULL
mSyncronizedTraitState
SynchronizedTraitState * mSyncronizedTraitState = NULL
Publiczne funkcje statyczne
DefaultEventHandler
void DefaultEventHandler( void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
Funkcje publiczne
Zamknij
void Close( bool aAbortNow )
Zainicjuj
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 )