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