nl::Weave::Profiles::DataManagement_Current::CommandSender

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

סיכום

הערה:המחלקה הזו כוללת אנקפסולציה של פרטי הפרוטוקול של שליחת פקודות, כדי לפשט את המנגנונים המעורבים באפליקציות. האפליקציה מספקת PacketBuffer שמכיל את המטען הייעודי (payload) של הפקודה, וכן קבוצה אופציונלית של ארגומנטים שמשנים את התוכן של כותרת הפקודה וכן את ההתנהגות של הפקודה. התועלת של wrapper זה לטיפול בפקודות אכן מוגבלת, בעיקר בשל המורכבות/הגמישות שכרוכות באימות אבטחה ובסידורי נתונים/ביטול סריאליזציה של נתונים.

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

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

קשירה

אפשר ליצור אובייקט מהמחלקה הזו באמצעות קישור של Weave, שמשמש כברירת המחדל לקישור שבו משתמשים לשליחת פקודות. המשתמש יכול גם לספק קישור לכל קריאה ל-SendCommand(), וכך לבטל את ברירת המחדל Binding. אין צורך לספק ערך Binding כברירת מחדל, אבל כל קישור שסופק ל-CommandSender חייב כבר להיות מאותחל.

EventCallback

המשתמש חייב להגדיר פונקציה מהסוג הזה אם הוא רוצה לקבל עדכון לגבי אירועים שמתרחשים לאחר שליחת הפקודה (ראו "אירועי API" בהמשך). הערך יכול להיות NULL אם למשתמש לא חשוב מה קורה לאחר שליחת הפקודה.

אירועי API

האירועים הבאים הם התוצאות האפשריות לאחר שליחת פקודה:

CommunicationError

אירעה שגיאה במהלך יצירת או שליחת ה-Command, או בזמן ההמתנה לתשובה. דוגמאות לשגיאות שעשויות להתרחש בזמן המתנה לתשובה הן שגיאות מרכזיות או סגירה בלתי צפויה של החיבור. סיבת השגיאה תיכלל בארגומנט InEventParam של ה-handler של EventCallback.

InProgressReceived

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

StatusReportReceived

קבלה של StatusReport מרמזת על שגיאה בעיבוד הפקודה. ניתן לגשת לדוח StatusReport דרך InEventParam.

ResponseReceived

קבלת תגובה מרמזת שנמען ה-Command טיפל ב-Command בהצלחה. התשובה יכולה להכיל מטען ייעודי (payload), או לא. אם האפליקציה מבקשת לשמור את מאגר החבילות, הוא יכול לבצע קריאה ל-ExchangeContext::AddRef() כדי להגדיל את מספר ההפניות.

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

EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam) typedef
void(*
EventType טיפוסים בני מנייה (enum)

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

mAppState = NULL
void *
mSyncronizedTraitState = NULL

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

DefaultEventHandler(void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void

תפקידים ציבוריים

Close(bool aAbortNow)
void
Init(nl::Weave::Binding *aBinding, const EventCallback aEventCallback, void *const aAppState)
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, ResourceIdentifier & aResourceId, uint32_t aProfileId, uint32_t aCommandType)
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, SendParams & aSendParams)
SetSynchronizedTraitState(SynchronizedTraitState *aTraitState)
void

מבנים

nl::Weave::Profiles::DataManagement_Current::CommandSender::InEventParam

הנתונים שהוחזרו לשולח על ידי הנמען של הפקודה בהתאמה אישית.

nl::Weave::Profiles::DataManagement_Current::CommandSender::OutEventParam

הנתונים הוחזרו לאובייקט CommandSender מפונקציית EventCallback.

nl::Weave::Profiles::DataManagement_Current::CommandSender::SendParams

מקודדת ארגומנטים שיועברו אל SendCommand().

nl::Weave::Profiles::DataManagement_Current::CommandSender::SynchronizedTraitState

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

EventCallback

void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)

EventType

 EventType

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

mAppState

void * mAppState = NULL

mSyncronizedTraitState

SynchronizedTraitState * mSyncronizedTraitState = NULL

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

DefaultEventHandler

void DefaultEventHandler(
  void *aAppState,
  EventType aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

תפקידים ציבוריים

סגירה

void Close(
  bool aAbortNow
)

הפעלה

WEAVE_ERROR Init(
  nl::Weave::Binding *aBinding,
  const EventCallback aEventCallback,
  void *const aAppState
)

SendCommand

WEAVE_ERROR SendCommand(
  nl::Weave::PacketBuffer *aPayload,
  nl::Weave::Binding *aBinding,
  ResourceIdentifier & aResourceId,
  uint32_t aProfileId,
  uint32_t aCommandType
)

SendCommand

WEAVE_ERROR SendCommand(
  nl::Weave::PacketBuffer *aPayload,
  nl::Weave::Binding *aBinding,
  SendParams & aSendParams
)

SetSynchronizedTraitState

void SetSynchronizedTraitState(
  SynchronizedTraitState *aTraitState
)