nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
סיכום
סוגים ציבוריים |
|
---|---|
@130
|
טיפוסים בני מנייה (enum) |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
התקשרות חזרה כדי להעביר אירועי מינוי לאפליקציה. |
EventID{
|
טיפוסים בני מנייה (enum) |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedefvoid(*
קריאה חוזרת (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
|
Binding *
|
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:: |
|
nl:: |
איגודים |
|
---|---|
nl:: |
|
nl:: |
סוגים ציבוריים
@130
@130
EventCallback
void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
התקשרות חזרה כדי להעביר אירועי מינוי לאפליקציה.
פרטים | |||||||||
---|---|---|---|---|---|---|---|---|---|
פרמטרים |
|
EventID
EventID
מאפיינים | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kEvent_OnEventStreamReceived
|
נוצר כשה-SubscriptionEngine כולל זרם אירוע בתוך ההודעה NotificationRequest. בשלב זה, האפליקציה עשויה לקרוא ל-EndSubscription(), AbortSubscription() או Free(). |
||||||||||||
kEvent_OnExchangeStart
|
נוצר אחרי שהקישור מוכן ו-ExchangeContext הוגדר אבל לפני שנשלחו הודעות. זו ההזדמנות האחרונה של אפליקציה לשנות את ההגדרות של 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, מצב הלקוח יהיה במצב הזה האפליקציה עשויה לקרוא ל-AbortSubscription() או Free(). הפרמטרים שנשלחו יכללו גם קוד שגיאה שמציין את הסיבה לסיום המינוי. המינוי עשוי להסתיים ממספר סיבות (חסר WRM ACK, כשל בהקצאת ExchangeContext, תם הזמן הקצוב לתפוגה,...) כמה קודי שגיאה אפשריים שנוצרו על ידי הלקוח:
|
||||||||||||
kEvent_OnUpdateComplete
|
אירוע שמציין את השלמת העדכון. פרמטרים של אירועים יציינו אם העדכון של נתיב של תכונה ספציפית הצליח או נכשל. |
ResubscribePolicyCallback
void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &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 )
מפעילים הרשמות מחדש אוטומטיות.
צריך לצרף קריאה חוזרת כדי לציין את המועד הבא של הניסיון החוזר במקרה של כשל.
פרטים | |||
---|---|---|---|
פרמטרים |
|
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.
אלא אם מתבצעת החלפה קודמת של העדכון, הלקוח יקבל את כל הנתונים שסומנו כעדכניים וישלח אותם למשיבים בבקשת עדכון אחת. אפשר לקרוא לשיטה הזו מכל שרשור.
פרטים | |||
---|---|---|---|
פרמטרים |
|
||
החזרות |
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 )
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 )