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

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

Podsumowanie

Uwaga: te zajęcia zostały zaprojektowane w celu ukrycia określonego szczegółu obsługi poleceń. Podjęto decyzję o ukryciu szczegółów obiektu ExchangeContext i weryfikacji mechanizmu uwierzytelniającego, a obsługę buforów pakietów pozostawiono w warstwie aplikacji. 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

Aby dostosować czas ponownego przesyłania komunikatów w toku, raportu o stanie i odpowiedzi, warstwa aplikacji musi obsługiwać obiekt ExchangeContext. Sprawdzoną metodą jest wciąż do ustalenia, ale w warstwie aplikacji dostępne są te 3 opcje:

1) Uzyskaj kontekst Exchange za pomocą narzędzia GetExchangeContext i bezpośrednio oceń go lub dostosuj. 2) Wstępnie przydziel i skonfiguruj Binding podczas uruchamiania, zanim pojawi się polecenie, i skonfiguruj je prawidłowo. 3) Utwórz tymczasowe Wiązanie za pomocą tej funkcji BindingPool::NewAnswererBindingFromExchangeContext

W obu przypadkach (2) i (3) warstwa aplikacji może egzekwować ustawienie zabezpieczeń/czasu za pomocą wartości Binding::ConfigurePendingExchangeContext. Element Wiązanie nigdy nie jest używany do generowania nowych kontekstów wymiany dla poleceń niestandardowych, więc nie trzeba go przechowywać w tym nicku.

Bufor pakietów żądania nie jest też przechowywany w ramach tego uchwytu, ponieważ nie jest on jednoznacznie używany. Jest to możliwe zwłaszcza wtedy, gdy warstwa aplikacji może obsłużyć to polecenie i bezpośrednio wysłać odpowiedź.

Warstwa aplikacji otrzyma bufor pakietów z tego samego wywołania zwrotnego, na które otrzyma ten uchwyt polecenia. Jeśli zdecyduje się obsługiwać to polecenie w sposób asynchroniczny, będzie musiał zapisać zarówno uchwyt polecenia, jak i bufor pakietów.

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 Exchange 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, kiedy czas działania jest prawidłowy.

kCommandFlag_ExpiryTimeValid

Ustaw, kiedy jest poprawna data ważności.

kCommandFlag_InitiationTimeValid

Ustaw, gdy czas inicjowania jest prawidłowy.

kCommandFlag_IsOneWay

Ustaw, gdy polecenie jest jednokierunkowe.

kCommandFlag_MustBeVersionValid

Ustaw, gdy 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 Exchange używany przez to polecenie przychodzące.

Szczegóły
Zwroty
Wskaźnik do obiektu kontekstu giełdy 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
)