nl::Weave::Profiles::DataManagement_Current::Command

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

Podsumowanie

Uwaga: te zajęcia służą do ukrywania pewnych szczegółów w zakresie obsługi poleceń. Podjęto decyzję, aby ukryć szczegóły elementu ExchangeContext i walidacji uwierzytelniania, a jednocześnie pozostawić obsługę pakietów PacketBuffer w warstwie aplikacji. 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

Aby dostosować czas ponownego przesyłania dla raportu W toku, raportu o stanie i komunikatu odpowiedzi, warstwa aplikacji musi w jakiś sposób obsługiwać obiekt ExchangeContext. Najlepszą metodą jest to, że nie trzeba tego robić, ale w warstwie aplikacji dostępne są 3 opcje:

1) Uzyskiwanie kontekstu Exchange za pomocą metody GetExchangeContext i bezpośrednia ocena/dostosowanie. 2) Wstępnie przydziel i skonfiguruj Wiązanie podczas uruchamiania, zanim otrzyma jakiekolwiek polecenie, i odpowiednio je skonfiguruj. 3) Utwórz tymczasowe Wiązanie przy użyciu funkcji BindingPool::NewResponderBindingFromExchangeContext.

Zarówno w zasadzie 2, jak i (3) warstwa aplikacji może wymuszać ustawienie zabezpieczeń/czasu za pomocą powiązania::ConfigureIstniejąceExchangeContext. Wiązanie nigdy nie jest używane do generowania nowych kontekstów wymiany dla poleceń niestandardowych, więc nie trzeba go zapisywać w tym nicku.

Bufor pakietów żądania również nie jest przechowywany w tym nicku, ponieważ nie ma wyraźnego sposobu jego wykorzystania. Jest to szczególnie istotne, jeśli warstwa aplikacji może obsłużyć to polecenie i bezpośrednio wysłać odpowiedź.

Warstwa aplikacji otrzyma bufor pakietu z tego samego wywołania zwrotnego, do którego otrzymuje ten uchwyt polecenia. W przypadku podjęcia decyzji o obsłudze tego polecenia w sposób asynchroniczny będzie musiał zapisać zarówno uchwyt polecenia, jak i bufor pakietu.

Typy publiczne

CommandFlags{
  kCommandFlag_MustBeVersionValid = 0x0001,
  kCommandFlag_InitiationTimeValid = 0x0002,
  kCommandFlag_ActionTimeValid = 0x0004,
  kCommandFlag_ExpiryTimeValid = 0x0008,
  kCommandFlag_IsOneWay = 0x0010
}
enum | typ wyliczeniowy
Bity flagi Command.
CommandFlags typedef
Bity flagi Command.

Atrybuty publiczne

actionTimeMicroSecond
int64_t
commandType
uint64_t
expiryTimeMicroSecond
int64_t
initiationTimeMicroSecond
int64_t
mustBeVersion
uint64_t

Funkcje publiczne

Close(void)
void
GetExchangeContext(void) const
Pobierz obiekt kontekstu wymiany używany przez to polecenie przychodzące.
IsActionTimeValid(void) const
bool
IsExpiryTimeValid(void) const
bool
IsInitiationTimeValid(void) const
bool
IsMustBeVersionValid(void) const
bool
IsOneWay(void) const
bool
SendError(uint32_t aProfileId, uint16_t aStatusCode, WEAVE_ERROR aWeaveError)
SendInProgress(void)
SendResponse(uint32_t traitInstanceVersion, nl::Weave::System::PacketBuffer *apPayload)
ValidateAuthenticator(nl::Weave::System::PacketBuffer *aRequestBuffer)

Typy publiczne

CommandFlags

 CommandFlags

Bity flagi Command.

Właściwości
kCommandFlag_ActionTimeValid

Ustaw prawidłowy czas działania.

kCommandFlag_ExpiryTimeValid

Ustaw prawidłowy czas ważności.

kCommandFlag_InitiationTimeValid

Ustaw prawidłową godzinę rozpoczęcia.

kCommandFlag_IsOneWay

Ustaw, jeśli polecenie jest jednokierunkowe.

kCommandFlag_MustBeVersionValid

Ustaw, kiedy pole wersji jest prawidłowe.

Atrybuty publiczne

actionTimeMicroSecond

int64_t actionTimeMicroSecond

commandType

uint64_t commandType

expiryTimeMicroSecond

int64_t expiryTimeMicroSecond

initiationTimeMicroSecond

int64_t initiationTimeMicroSecond

mustBeVersion

uint64_t mustBeVersion

Funkcje publiczne

Zamknij

void Close(
  void
)

GetExchangeContext

nl::Weave::ExchangeContext * GetExchangeContext(
  void
) const 

Pobierz obiekt kontekstu wymiany używany przez to polecenie przychodzące.

Szczegóły
Zwroty
Wskaźnik do obiektu kontekstu wymiany używanego przez to polecenie przychodzące

IsActionTimeValid

bool IsActionTimeValid(
  void
) const 

IsExpiryTimeValid

bool IsExpiryTimeValid(
  void
) const 

IsInitiationTimeValid

bool IsInitiationTimeValid(
  void
) const 

IsMustBeVersionValid

bool IsMustBeVersionValid(
  void
) const 

IsOneWay

bool IsOneWay(
  void
) const 

SendError

WEAVE_ERROR SendError(
  uint32_t aProfileId,
  uint16_t aStatusCode,
  WEAVE_ERROR aWeaveError
)

SendInProgress

WEAVE_ERROR SendInProgress(
  void
)

SendResponse

WEAVE_ERROR SendResponse(
  uint32_t traitInstanceVersion,
  nl::Weave::System::PacketBuffer *apPayload
)

ValidateAuthenticator

WEAVE_ERROR ValidateAuthenticator(
  nl::Weave::System::PacketBuffer *aRequestBuffer
)