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

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

סיכום

הערה:המחלקה הזו תוכננה להסתיר פרט מסוים בטיפול בפקודות. התקבלה החלטה להסתיר את הפרטים של ExchangeContext והאימות של המאמת, והטיפול ב-PacketBuffers יישאר בשכבת האפליקציה. התועלת של ה-wrapper הזה בטיפול בפקודות מוגבלת, בעיקר בגלל המורכבות/הגמישות הכרוכה באימות האבטחה ובעיבוד סריאליזציה של נתונים או ביטול סריאליזציה של נתונים.

הפרטים לגבי אימות הפקודה עדיין טרם נקבעו

כדי לשנות את תזמון ההעברה החוזרת של ההודעה 'בתהליך', של 'דוח הסטטוס' וגם של הודעת התגובה, שכבת האפליקציה תצטרך להתמודד באופן כלשהו עם האובייקט ExchangeContext. השיטה הטובה ביותר עדיין לא נקבעה, אבל בשכבת האפליקציה יש שלוש אפשרויות:

1) לקבל את ההקשר של Exchange באמצעות GetExchangeContext ולבדוק אותו באופן ישיר. 2) הקצאה מראש והגדרת Binding במהלך האתחול, לפני קבלת פקודה, והגדרה נכונה 3) יצירת Binding זמני באמצעות הפונקציה הזו BindingPool::NewresponseerBindingFromExchangeContext

בשני המקרים (2) ו-(3), שכבת האפליקציה יכולה לאכוף הגדרות אבטחה/תזמון באמצעות Binding::ConfigureConfigureExchangeContext. ה-Binding אף פעם לא משמש כדי ליצור הקשרים חדשים של Exchange לפקודות מותאמות אישית, כך שלא צריך לאחסן אותו בכינוי הזה.

גם מאגר החבילות של הבקשות לא נשמר בנקודת האחיזה הזו, כי אין שימוש ברור בו. זה נכון במיוחד אם שכבת האפליקציה יכולה לטפל בפקודה הזו ולשלוח תגובה ישירות.

שכבת האפליקציה תקבל את מאגר הנתונים הזמני מאותו קריאה חוזרת (callback) שהיא מקבלת את נקודת האחיזה הזו של הפקודה. אם הוא מחליט לטפל בפקודה הזו באופן אסינכרוני, הוא יצטרך לאחסן גם את נקודת האחיזה של הפקודה וגם את מאגר המנות.

סוגים ציבוריים

CommandFlags{
  kCommandFlag_MustBeVersionValid = 0x0001,
  kCommandFlag_InitiationTimeValid = 0x0002,
  kCommandFlag_ActionTimeValid = 0x0004,
  kCommandFlag_ExpiryTimeValid = 0x0008,
  kCommandFlag_IsOneWay = 0x0010
}
טיפוסים בני מנייה (enum)
ביטים של הדגל Command
CommandFlags typedef
ביטים של הדגל Command

מאפיינים ציבוריים

actionTimeMicroSecond
int64_t
commandType
uint64_t
expiryTimeMicroSecond
int64_t
initiationTimeMicroSecond
int64_t
mustBeVersion
uint64_t

פונקציות ציבוריות

Close(void)
void
GetExchangeContext(void) const
מאחזרים את אובייקט ההקשר של Exchange שמשמש את הפקודה הנכנסת הזו.
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)

סוגים ציבוריים

CommandFlags

 CommandFlags

ביטים של הדגל Command

מאפיינים
kCommandFlag_ActionTimeValid

מגדירים מתי זמן הפעולה תקין.

kCommandFlag_ExpiryTimeValid

מגדירים מתי תפוגה תקפה.

kCommandFlag_InitiationTimeValid

צריך להגדיר מתי שעת ההתחלה תקינה.

kCommandFlag_IsOneWay

מגדירים מתי הפקודה היא חד-כיוונית.

kCommandFlag_MustBeVersionValid

מגדירים מתי השדה 'גרסה' חוקי.

CommandFlags

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

ביטים של הדגל Command

מאפיינים ציבוריים

actionTimeMicroSecond

int64_t actionTimeMicroSecond

commandType

uint64_t commandType

expiryTimeMicroSecond

int64_t expiryTimeMicroSecond

initiationTimeMicroSecond

int64_t initiationTimeMicroSecond

mustBeVersion

uint64_t mustBeVersion

פונקציות ציבוריות

סגירה

void Close(
  void
)

GetExchangeContext

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

מאחזרים את אובייקט ההקשר של Exchange שמשמש את הפקודה הנכנסת הזו.

פרטים
החזרות
מצביע לאובייקט ההקשר של Exchange שמשמש את הפקודה הנכנסת הזו

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
)