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

סיכום

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

@130 טיפוסים בני מנייה (enum)
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
קריאה חוזרת (callback) לצורך העברת אירועי הרשמה לאפליקציה.
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 לרוקן את קבוצת TraitPath שבהמתנה לעדכון ולבטל את בקשת העדכון שמתבצעת, אם יש כאלה.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
הפעלת הרשמות מחדש באופן אוטומטי.
EndSubscription(void)
לסיים את המינוי.
FlushUpdate()
אותות לכך שהאפליקציה סיימה לשנות את כל TraitUpdatableDataSinks.
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)

קריאה חוזרת (callback) לצורך העברת אירועי הרשמה לאפליקציה.

פרטים
פרמטרים
[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

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

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

kEvent_OnSubscriptionEstablished

נוצר בעקבות השקה מוצלחת של המינוי.

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

kEvent_OnSubscriptionTerminated

סימון סיום של מינוי זה.

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

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

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

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

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

קוד שגיאה משמעות
WEAVE_ERROR_INVALID_MESSAGE_TYPE התקבלה הודעה לא מזוהה.
WEAVE_ERROR_TIMEOUT לא מתקבל תיק או שבדיקת מצב הפעילות (liveness) נכשלה.
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)

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

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

פרטים
פרמטרים
[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_REsubscribe_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 לרוקן את קבוצת TraitPath שבהמתנה לעדכון ולבטל את בקשת העדכון שמתבצעת, אם יש כאלה.

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

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

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

יש לצרף קריאה חוזרת (callback) כדי לציין את הפעם הבאה שבה יתבצע ניסיון חוזר כשזה נכשל.

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

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

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

מסיימים בזריזות מינוי של לקוח.

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

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

בזמן ההמתנה לתשובה לבקשת SubscribeCancelRequest, SubscriptionClient נכנסת למדינה Canceling.

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

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

FlushUpdate

WEAVE_ERROR FlushUpdate()

אותות לכך שהאפליקציה סיימה לשנות את כל TraitUpdatableDataSinks.

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

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

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

חינם

void Free(
  void
)

שחרר את האובייקט SubscriptionClient הזה.

שחרור אובייקט SubscriptionClient.

המערכת קוראת ל-AbortSubscription() אם יש צורך ומשחררת את הריכוז באובייקט 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
)