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{
|
טיפוסים בני מנייה (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 )