nl::Weave::Profiles::DataManagement_Current::SubscriptionClient

סיכום

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

@130 טיפוסים בני מנייה (enum)
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
התקשרות חזרה כדי להעביר אירועי מינוי לאפליקציה.
EventID{
  kEvent_OnSubscriptionTerminated = 1,
  kEvent_OnExchangeStart = 2,
  kEvent_OnSubscribeRequestPrepareNeeded = 3,
  kEvent_OnSubscriptionEstablished = 4,
  kEvent_OnNotificationRequest = 5,
  kEvent_OnNotificationProcessed = 6,
  kEvent_OnEventStreamReceived = 7,
  kEvent_OnSubscriptionActivity = 8,
  kEvent_OnUpdateComplete = 9,
  kEvent_OnNoMorePendingUpdates = 10
}
טיפוסים בני מנייה (enum)
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec) typedef
void(*
קריאה חוזרת (callback) כדי לאחזר את מרווח הזמן שצריך להמתין לפני ההרשמה מחדש הבאה.

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

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
בתהליך ההטמעה של מדיניות ברירת המחדל נבחר משבצת זמן אקראית עם רזולוציה באלפיות השנייה לגבי חלון שהולך וגדל, לאחר רצף פיבונאצ'י עד WDM_RESubscribe_MAX_FIBONACCI_STEP_INDEX.

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

AbortSubscription(void)
void
מבטלים את המינוי.
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe(void)
void
השבתת המנגנון של ההרשמה מחדש.
DiscardUpdates()
void
מורה ל-SubscriptionClient לרוקן את הקבוצה של TraitPaths שבהמתנה לעדכון, ומבטלת את בקשת העדכון שנמצאת בשלבי ביצוע, אם יש כזו.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
מפעילים הרשמות מחדש אוטומטיות.
EndSubscription(void)
מסיימים את המינוי.
FlushUpdate()
אותות שהאפליקציה סיימה לבצע את השינויים של כל אובייקטי TraitUpdatableDataSink.
FlushUpdate(bool aForce)
Free(void)
void
ללא אובייקט SubscriptionClient.
GetBinding(void) const
GetLivenessTimeoutMsec(void) const
uint32_t
GetPeerNodeId(void) const
uint64_t
GetSubscriptionId(uint64_t *const apSubscriptionId)
IndicateActivity(void)
void
InitiateCounterSubscription(const uint32_t aLivenessTimeoutSec)
void
InitiateSubscription(void)
void
מגדירים את SubscriptionClient כגורם יוזם (בניגוד למנוי נגדי) ומעלים את המינוי אם הוא לא כזה.
IsCanceling() const
bool
IsEstablished()
bool
IsEstablishedIdle()
bool
IsFree()
bool
IsInProgressOrEstablished()
bool
IsInResubscribeHoldoff()
bool
IsRetryEnabled()
bool
IsTerminated()
bool
IsUpdatePendingOrInProgress()
bool
LockUpdateMutex(void)
void
OnCatalogChanged()
void
יש לקרוא לשיטה הזו לאחר שינוי הקטלוג של TraitDataSink.
ResetResubscribe(void)
void
מפעילים את מנגנון ההרשמה מחדש.
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
מורה ל-SubscriptionClient להפסיק לנסות מחדש בקשות עדכון.
UnlockUpdateMutex(void)
void

מבנים

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::LastObservedEvent
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::ResubscribeParam

איגודים

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::InEventParam
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::OutEventParam

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

@130

 @130

EventCallback

void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)

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

פרטים
פרמטרים
[in] aAppState
מצביע על מצב האפליקציה שהוגדר במהלך האתחול של SubscriptionClient.
[in] aEvent
ציון האירוע שמתרחש
[in] aInParam
מבנה עם פרטים נוספים על האירוע
[out] aOutParam
המידע מועבר בחזרה על ידי האפליקציה

EventID

 EventID
מאפיינים
kEvent_OnEventStreamReceived

נוצר כשה-SubscriptionEngine כולל זרם אירוע בתוך ההודעה NotificationRequest.

בשלב זה, האפליקציה עשויה לקרוא ל-EndSubscription(), AbortSubscription() או Free().

kEvent_OnExchangeStart

נוצר אחרי שהקישור מוכן ו-ExchangeContext הוגדר אבל לפני שנשלחו הודעות.

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

kEvent_OnNoMorePendingUpdates

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

kEvent_OnNotificationProcessed

נוצר כאשר SubscriptionEngine מסיים לעבד הודעת NotificationRequest.

בשלב הזה, האפליקציה עשויה לקרוא ל-EndSubscription(), AbortSubscription() או Free().

kEvent_OnNotificationRequest

נוצר בתגובה ל-NotificationRequest.

בשלב הזה, האפליקציה עשויה לקרוא ל-EndSubscription(), AbortSubscription() או Free().

kEvent_OnSubscribeRequestPrepareNeeded

נשלחת כשהמנוע מוכן לשלוח את SubscribeRequest.

האפליקציה צפויה למלא את הנתיבים שאליהם היא רוצה להירשם.

kEvent_OnSubscriptionActivity

אירוע שמציין פעילות של מינויים.

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

kEvent_OnSubscriptionEstablished

נוצרו לאחר יצירה מוצלחת של המינוי.

בשלב הזה, האפליקציה עשויה לקרוא ל-EndSubscription(), AbortSubscription() או Free().

kEvent_OnSubscriptionTerminated

סימון סוף המינוי הזה.

הפרמטרים שנשלחו אל nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback מציינים אם יתבצע ניסיון הרשמה מחדש באופן אוטומטי.

במהלך הקריאה לאירוע ה-handler, מצב הלקוח יהיה Terminated. אם לא יתבצע ניסיון חוזר, מצב הלקוח ישתנה ל-Initialized כשה-handler של האירועים יחזור. אחרת, המדינה תעבור ל-ResubscribeHoldoff וייעשה ניסיון ליצור מחדש את המינוי לאחר מועד ההשהיה.

במצב הזה האפליקציה עשויה לקרוא ל-AbortSubscription() או Free().

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

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

קוד שגיאה משמעות
WEAVE_ERROR_INVALID_MESSAGE_TYPE התקבלה הודעה לא מזוהה.
WEAVE_ERROR_TIMEOUT הקוד לא התקבל או שבדיקת התקינות נכשלה.
WEAVE_ERROR_INCORRECT_STATE ההודעות מתקבלות במצב לא צפוי.
WEAVE_ERROR_STATUS_REPORT_RECEIVED דוח הסטטוס מתקבל.
WEAVE_ERROR_INVALID_ARGUMENT השדות של בקשת ההרשמה לא חוקיים.

kEvent_OnUpdateComplete

אירוע שמציין את השלמת העדכון.

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

ResubscribePolicyCallback

void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)

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

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

פרטים
פרמטרים
[in] aAppState
מצביע על מצב האפליקציה שהוגדר במהלך האתחול של SubscriptionClient.
[in] aInParam
מבנה עם פרטים נוספים על הניסיון החוזר
[out] aOutIntervalMsec
משך הזמן באלפיות השנייה לפני ניסיון חוזר הבא

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

DefaultEventHandler

void DefaultEventHandler(
  EventID aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

DefaultResubscribePolicyCallback

void DefaultResubscribePolicyCallback(
  void *const aAppState,
  ResubscribeParam & aInParam,
  uint32_t & aOutIntervalMsec
)

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

זמן ההמתנה האקראי אחרי WDM_REsignup_MAX_FIBONACCI_STEP_INDEX יהיה בערך שעה. כשמספר הניסיונות החוזרים מתאפס ל-0, הרצף מתחיל שוב מההתחלה.

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

AbortSubscription

void AbortSubscription(
  void
)

מבטלים את המינוי.

ביטול מינוי של לקוח.

הפסקה מיידית של קבלת כל התנועה המשויכת למינוי, ושחרור כל משאבי התקשורת הבסיסיים. האובייקט SubscriptionClient עצמו נשאר בתוקף ואפשר להשתמש בו שוב.

מסיים את סיום המינוי של הלקוח, בלי להודיע למוציא לאור של המינוי ובלי להעביר אירוע OnSubscriptionTerminated לגורם המטפל באירועים של האפליקציה. אם קיים מינוי משותף, גם המינוי הנגדית יבוטל.

לאחר קריאה ל-AbortSubscription(), האובייקט SubscriptionClient נכנס למצב Terminated. לאחר השלמת תהליך הסיום, האובייקט נכנס למצב Initialized. שני המעברים מתרחשים באופן סינכרוני בתוך הקריאה ל-AbortSubscription().

אחרי החזרת AbortSubscription(), אפשר להשתמש באובייקט SubscriptionClient כדי להפעיל מינוי נוסף. לחלופין, אפשר לפנות אותו באמצעות קריאה לשיטה Free().

ClearUpdated

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

DisableResubscribe

void DisableResubscribe(
  void
)

השבתת מנגנון ההרשמה מחדש.

אם ההרשמה מחדש הייתה בהמתנה, היא תבוטל.

DiscardUpdates

void DiscardUpdates()

מורה ל-SubscriptionClient לרוקן את הקבוצה של TraitPaths שבהמתנה לעדכון, ומבטלת את בקשת העדכון שנמצאת בשלבי ביצוע, אם יש כזו.

אפשר להפעיל את השיטה הזו מכל קריאה חוזרת.

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

מפעילים הרשמות מחדש אוטומטיות.

צריך לצרף קריאה חוזרת כדי לציין את המועד הבא של הניסיון החוזר במקרה של כשל.

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

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

מסיימים את המינוי.

כדאי לסיים מינוי לקוח בשמחה.

כשאפשרות זמן הידור WDM_ENABLE_SUBSCRIPTION_CANCEL מופעלת, יש לסיים את המינוי בעדינות על ידי שליחת בקשתCancelRequest לעמית. המשאבים שמשויכים למינוי ישוחררו כתגובה מהעמית או לאחר תום הזמן הקצוב לתפוגה. כאשר האפשרות מושבתת, הקריאה מקבילה ל-AbortSubscription().

מסיים בחביבות את סיום המינוי של הלקוח. אם התמיכה בביטול מינוי מופעלת, הודעת SubscribeCancelRequest תישלח למפרסם של המינוי והמערכת תמתין לתשובה לפני סיום המינוי. אחרת, המינוי מסתיים מיד באופן דומה ל-AbortSubscription(). אם קיים מינוי משותף, גם המינוי הנגדית יבוטל.

בזמן ההמתנה לתשובה ל-SubscribeCancelRequest, הערך SubscriptionClient נכנס למצב Canceling.

אחרי שתהליך הסיום מתחיל, האובייקט SubscriptionClient נכנס למצב Terminated ואירוע OnSubscriptionTerminated מועבר ל-handler של האירועים של האפליקציה. לתשומת ליבכם: אם התמיכה בביטול לא מופעלת, ייתכן שה-handler של האירוע ייקרא באופן סינכרוני בתוך הקריאה ל-EndSubscription().

אחרי שה-handler של האירועים של האפליקציה חוזר, האובייקט SubscriptionClient נכנס למצב Initialized. בשלב הזה ניתן להשתמש באובייקט SubscriptionClient כדי להפעיל מינוי נוסף. לחלופין, ניתן לפנות אותו באמצעות קריאה לשיטה Free().

FlushUpdate

WEAVE_ERROR FlushUpdate()

אותות שהאפליקציה סיימה לבצע את השינויים של כל אובייקטי TraitUpdatableDataSink.

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

פרטים
פרמטרים
[in] aForce
אם הערך הוא True, העדכון יישלח באופן מיידי גם אם תוזמן ניסיון חוזר בעתיד. כברירת מחדל, הפרמטר הזה נחשב כ-False.
החזרות
WEAVE_NO_ERROR במקרה של הצלחה; קודי WEAVE_ERROR אחרים למקרה של כשל.

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

בחינם

void Free(
  void
)

ללא אובייקט SubscriptionClient.

בחינם אובייקט SubscriptionClient.

במקרה הצורך, קוראת ל-AbortSubscription() ומשחררת את ה-refcount באובייקט SubscriptionClient הזה. במסגרת השימוש הנכון, האובייקט אמור להחזיר את האובייקט למאגר האובייקטים

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

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

GetBinding

Binding * GetBinding(
  void
) const 

GetLivenessTimeoutMsec

uint32_t GetLivenessTimeoutMsec(
  void
) const 

GetPeerNodeId

uint64_t GetPeerNodeId(
  void
) const 

GetSubscriptionId

WEAVE_ERROR GetSubscriptionId(
  uint64_t *const apSubscriptionId
)

IndicateActivity

void IndicateActivity(
  void
)

InitiateCounterSubscription

void InitiateCounterSubscription(
  const uint32_t aLivenessTimeoutSec
)

InitiateSubscription

void InitiateSubscription(
  void
)

מגדירים את SubscriptionClient כגורם יוזם (בניגוד למנוי נגדי) ומעלים את המינוי אם הוא לא כזה.

IsCanceling

bool IsCanceling() const 

IsEstablished

bool IsEstablished()

IsEstablishedIdle

bool IsEstablishedIdle()

IsFree

bool IsFree()

IsInProgressOrEstablished

bool IsInProgressOrEstablished()

IsInResubscribeHoldoff

bool IsInResubscribeHoldoff()

IsRetryEnabled

bool IsRetryEnabled()

IsTerminated

bool IsTerminated()

IsUpdatePendingOrInProgress

bool IsUpdatePendingOrInProgress()

LockUpdateMutex

void LockUpdateMutex(
  void
)

OnCatalogChanged

void OnCatalogChanged()

יש לקרוא לשיטה הזו לאחר שינוי הקטלוג של TraitDataSink.

ResetResubscribe

void ResetResubscribe(
  void
)

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

הפעולה הזו תתחיל ניסיון חוזר מיידי

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

SetUpdated

WEAVE_ERROR SetUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle,
  bool aIsConditional
)

SuspendUpdateRetries

void SuspendUpdateRetries()

מורה ל-SubscriptionClient להפסיק לנסות מחדש בקשות עדכון.

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

UnlockUpdateMutex

void UnlockUpdateMutex(
  void
)