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

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

סיכום

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

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

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

שזירה Binding

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

EventCallback

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

אירועי API

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

CommunicationError

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

InProgressReceived

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

StatusReportReceived

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

ResponseReceived

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

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

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
)

Init

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
)