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 bufor PacketBuffer zawierający ładunek polecenia, a także opcjonalny zestaw argumentów, które zmieniają zawartość nagłówka polecenia oraz jego działanie. Przydatność tego otoki w zakresie obsługi poleceń jest w rzeczywistości ograniczona, głównie ze względu na złożoność i elastyczność procesu weryfikacji zabezpieczeń oraz w trakcie serializacji i usuwania zserializacji danych.
Szczegóły weryfikacji polecenia są nadal do ustalenia
Ta klasa pomaga też aplikacjom w określaniu, czy dane w powiązanym obiekcie TraitDataSink dotarły do efektów ubocznych polecenia (na podstawie wersji podanej w odpowiedzi na polecenie). Aplikacja odpowiada za zarządzanie pamięcią tego obiektu.
Obiekt tej klasy można zainicjować za pomocą komponentu Weave Binding, które będzie służyło jako domyślne wiązanie używane do wysyłania poleceń. Użytkownik może też dodać element Binding do każdego wywołania funkcji SendCommand(), który zastępuje domyślne ustawienie Wiązanie. Podanie domyślnego ustawienia Binding (Wiązanie) nie jest konieczne, jednak każde powiązanie udostępnione do funkcji CommandSender musi być już zainicjowane.
EventCallback
Jeśli użytkownik chce otrzymywać informacje o zdarzeniach, które zachodzą po wysłaniu polecenia, użytkownik musi zdefiniować funkcję tego typu (patrz „Zdarzenia interfejsu API” poniżej). Może to być wartość NULL, jeśli użytkownikowi nie jest obojętne, co stanie się po wysłaniu polecenia.
Zdarzenia interfejsu API
Po wysłaniu polecenia możliwe są te zdarzenia:
CommunicationError
Podczas tworzenia lub wysyłania polecenia lub 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 zamknięcie połączenia. Przyczyna błędu będzie zawarta w argumencie InEventParam w module obsługi zdarzenia EventCallback.
InProgressReceived
Odbiorca może wysłać stan „w toku” informujący, że polecenie Command zostało odebrane, ale nie zostało jeszcze ukończone. Po zakończeniu tej operacji odbiorca wyśle odpowiedź lub raport Stanu. Wysyłanie „w toku” .
StatusReportReceived
Otrzymanie raportu StatusReport oznacza, że podczas przetwarzania polecenia Command wystąpił błąd. Dostęp do raportu StatusReport można uzyskać poprzez parametr InEventParam.
ResponseReceived
Otrzymanie odpowiedzi oznacza, że adresat Command prawidłowo obsługiwał Command. Odpowiedź może zawierać ładunek lub nie. Jeśli aplikacja chce zachować bufor pakietów, może wywołać funkcję ExchangeContext::AddRef(), aby zwiększyć liczbę odesł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
|
Struktura |
|
---|---|
nl:: |
Dane zwrócone do nadawcy przez odbiorcę polecenia niestandardowego. |
nl:: |
Dane zwrócone do obiektu CommandSender z funkcji EventCallback. |
nl:: |
Obejmuje argumenty przekazywane do funkcji 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 )
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 )