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

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

Zusammenfassung

Hinweis:Diese Klasse ist darauf ausgelegt, ein bestimmtes Detail bei der Befehlsverarbeitung zu verbergen. Es wurde entschieden, die Details von ExchangeContext und der Authenticator-Validierung auszublenden und die Verarbeitung von PacketBuffers der Anwendungsebene zu überlassen. Der Nutzen dieses Wrappers für die Befehlsverarbeitung ist in der Tat begrenzt, hauptsächlich aufgrund der Komplexität/Flexibilität der Sicherheitsvalidierung und Datenserialisierung/Deserialisierung.

Die Details für die Befehlsvalidierung stehen noch aus.

Um den Zeitpunkt der erneuten Übertragung für "In Bearbeitung", "Statusbericht" und auch für die Antwortnachricht anzupassen, muss die Anwendungsebene das ExchangeContext-Objekt verarbeiten. Die beste Vorgehensweise ist noch nicht festgelegt, aber auf der Anwendungsebene gibt es drei Möglichkeiten:

1) Rufen Sie den Exchange-Kontext über GetExchangeContext ab und werten Sie ihn direkt aus/passen Sie ihn an. 2) Weisen Sie während des Starts ein Binding zu, konfigurieren Sie es vor dem Eintreffen eines Befehls und konfigurieren Sie es ordnungsgemäß. 3) Erstellen Sie eine temporäre Binding mithilfe der Funktion „BindingPool::NewAnswererBindingFromExchangeContext“.

Sowohl in (2) als auch in (3) kann die Anwendungsebene die Sicherheits-/Zeiteinstellungen über Binding::ConfigureExchangeContext erzwingen. Das Binding wird nie verwendet, um neue Austauschkontexte für benutzerdefinierte Befehle zu generieren, sodass sie nicht in diesem Handle gespeichert werden muss.

Der Zwischenspeicher für Anfragepakete wird ebenfalls nicht in diesem Handle gespeichert, da er nicht offensichtlich verwendet wird. Dies gilt insbesondere, wenn die Anwendungsebene diesen Befehl verarbeiten und die Antwort direkt senden kann.

Die Anwendungsebene würde den Paketpuffer von derselben Callback-Funktion empfangen, die sie mit diesem Befehls-Handle empfängt. Wenn dieser Befehl asynchron verarbeitet werden soll, müssen sowohl das Befehls-Handle als auch der Paketpuffer gespeichert werden.

Öffentliche Typen

CommandFlags{
  kCommandFlag_MustBeVersionValid = 0x0001,
  kCommandFlag_InitiationTimeValid = 0x0002,
  kCommandFlag_ActionTimeValid = 0x0004,
  kCommandFlag_ExpiryTimeValid = 0x0008,
  kCommandFlag_IsOneWay = 0x0010
}
enum
Das Flag Command (Befehl).
CommandFlags typedef
Das Flag Command (Befehl).

Öffentliche Attribute

actionTimeMicroSecond
int64_t
commandType
uint64_t
expiryTimeMicroSecond
int64_t
initiationTimeMicroSecond
int64_t
mustBeVersion
uint64_t

Öffentliche Funktionen

Close(void)
void
GetExchangeContext(void) const
Rufen Sie das von diesem eingehenden Befehl verwendete Exchange-Kontextobjekt ab.
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)

Öffentliche Typen

CommandFlags

 CommandFlags

Das Flag Command (Befehl).

Attribute
kCommandFlag_ActionTimeValid

Legt fest, wann die Aktionszeit gültig ist.

kCommandFlag_ExpiryTimeValid

Legt fest, wann die Ablaufzeit gültig ist.

kCommandFlag_InitiationTimeValid

Legt fest, wann die Init-Zeit gültig ist.

kCommandFlag_IsOneWay

Wird festgelegt, wenn der Befehl einseitig ist.

kCommandFlag_MustBeVersionValid

Legt fest, wann das Versionsfeld gültig ist.

CommandFlags

enum nl::Weave::Profiles::DataManagement_Current::Command::CommandFlags CommandFlags

Das Flag Command (Befehl).

Öffentliche Attribute

actionTimeMicroSecond

int64_t actionTimeMicroSecond

commandType

uint64_t commandType

expiryTimeMicroSecond

int64_t expiryTimeMicroSecond

initiationTimeMicroSecond

int64_t initiationTimeMicroSecond

mustBeVersion

uint64_t mustBeVersion

Öffentliche Funktionen

Schließen

void Close(
  void
)

GetExchangeContext

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

Rufen Sie das von diesem eingehenden Befehl verwendete Exchange-Kontextobjekt ab.

Details
Rückgabe
Ein Zeiger auf das Exchange-Kontextobjekt, das von diesem eingehenden Befehl verwendet wird

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
)