nl:: Weave:: Profiles:: DataManagement_Legacy:: Binding
#include <src/lib/profiles/data-management/Legacy/Binding.h>
המחלקה Binding מנהלת את מצב התקשורת מטעם ישות אפליקציה באמצעות Weave.
סיכום
כאשר יישום רוצה להשתמש ב-Weave כדי לתקשר עם ישות מרוחקת, קיים מגוון רחב של אפשרויות. הכיתה קישור מרכזת את האפשרויות האלה ומארגנת אותן כך שהדברים הקלים יהיו קלים והדברים הקשים יותר יהיו לפחות ניתנים לניהול. האפשרויות הכלולות כוללות:
- תקשורת unicast UDP לצומת עמית ידוע.
- שידור UDP עם צומת 'כל'.
- בתקשורת WRMP מסוג unicast עם צומת עמית ידוע.
- תקשורת ב-TCP עם צומת ידוע של עמית.
- תקשורת TCP עם נקודת קצה של שירות ידועה באמצעות מופע של מנהל שירות כדי להגדיר את ההגדרות.
- תקשורת TCP על סמך חיבור שנוצר מראש.
בונים והורסים |
|
---|---|
Binding(void)
בנאי ברירת המחדל של אובייקטים מקשר.
|
|
~Binding(void)
ה-Destructor לאובייקטים מקשרים.
|
סוגים ציבוריים |
|
---|---|
@165{
|
טיפוסים בני מנייה (enum) קבוצת מצבי האובייקט קישור. |
מאפיינים ציבוריים |
|
---|---|
mAuthMode
|
WeaveAuthMode
מצב האימות של Weave שבו ייעשה שימוש.
|
mConnection
|
מצביע לחיבור Weave שנמצא כרגע בשימוש בקישור הזה.
|
mEngine
|
הפניה לאובייקט ProtocolEngine שקשור לקישור הזה.
|
mPeerNodeId
|
uint64_t
מזהה הצומת של 64 ביט של יעד הקישור.
|
mServiceMgr
|
מצביע לאובייקט (אופציונלי) ServiceManager כדי להשתמש בו להשלמת הקישור הזה.
|
mState
|
uint8_t
מצב האובייקט קישור הנוכחי.
|
mTransport
|
uint8_t
ההעברה שבה משתמשים כדי להשלים את הקישור הזה.
|
תפקידים ציבוריים |
|
---|---|
CompleteConfirm(WeaveConnection *aConnection)
|
void
טיפול באישור של בקשת חיוב.
|
CompleteConfirm(StatusReport & aReport)
|
void
טיפול בכשל בבקשת הקישור.
|
CompleteConfirm(void)
|
void
טיפול באישור של בקשת חיוב.
|
CompleteRequest(ProtocolEngine *aEngine)
|
מבקשים להשלים קישור.
|
Connect(WeaveConnection *aConnection)
|
צריך להשלים קישור TCP על ידי מתן חיבור מלא.
|
Finalize(void)
|
void
'לא הושלם' לקישור ומשחררים אותו.
|
Finalize(WEAVE_ERROR aErr)
|
void
'לא הושלם' לקישור ומשחררים אותו.
|
Free(void)
|
void
מבטלים את מצב הקישור.
|
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
|
מפיקים אובייקט ExchangeContext מ-Binding.
|
IncompleteIndication(StatusReport & aReport)
|
void
טפל בכשל של קישור.
|
Init(const uint64_t & aPeerNodeId)
|
אפשר להפעיל קישור עם מזהה צומת בלבד.
|
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
|
מפעילים אובייקט קישור על סמך מזהה העמיתים וההעברה.
|
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
|
מפעילים אובייקט קישור לנקודת קצה של שירות.
|
Init(WeaveConnection *aConnection)
|
מאתחלים אובייקט Binding באמצעות WeaveConnection.
|
IsComplete(void)
|
bool
בודקים אם הקישור הושלם.
|
IsFree(void)
|
bool
הבדיקה לא כרוכה בתשלום.
|
UncompleteRequest(void)
|
void
צריך לגרום לקישור להיות חלקי.
|
UncompleteRequest(WEAVE_ERROR aErr)
|
void
צריך לגרום לקישור להיות חלקי.
|
סוגים ציבוריים
@165
@165
קבוצת מצבי האובייקט קישור.
תכונות | |
---|---|
kState_Complete
|
מצב הקישור המלא ומוכן לשימוש. |
kState_Completing
|
המצב של קישור שנמצא בתהליך סיום. |
kState_Incomplete
|
המצב הראשוני (והסופי) של קישור. |
מאפיינים ציבוריים
mAuthMode
WeaveAuthMode mAuthMode
מצב האימות של Weave שבו ייעשה שימוש.
(READ_ONLY)
זהו מצב האימות המשמש בכל סוגי התקשורת שכפופה לקישור הזה.
mConnection
WeaveConnection * mConnection
מצביע לחיבור Weave שנמצא כרגע בשימוש בקישור הזה.
(לקריאה בלבד)
ניתן לאתחל קישור TCP באופן מיידי או בזמן ההשלמה של חיבור מיידי.
mEngine
ProtocolEngine * mEngine
הפניה לאובייקט ProtocolEngine שקשור לקישור הזה.
תהליך הקישור מתבצע בדרך כלל ביחס למנוע פרוטוקול מסוים, שמשמש בעיקר כדרך לגישה ל-MessageLayer. זה המקום שבו אנחנו עוקבים אחריו.
mPeerNodeId
uint64_t mPeerNodeId
מזהה הצומת של 64 ביט של יעד הקישור.
(לקריאה בלבד)
לכל קישור יש ישות יעד, ונקראת כאן. בנוסף למזהה צומת של Weave, זה עשוי לתת שם לנקודת קצה של שירות.
mServiceMgr
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr
מצביע לאובייקט (אופציונלי) ServiceManager כדי להשתמש בו להשלמת הקישור הזה.
(לקריאה בלבד)
בעת קישור לשירות Weave, ייתכן שבזמן האתחול יסופק מזהה נקודת קצה של שירות ברמת 64 ביט במקום מזהה צומת של Weave. במקרה כזה, נדרש גם אובייקט ServiceManager כדי להשלים את הקישור. קישורים רגילים של TCP ו-WRMP אינם מחייבים אובייקט ServiceManager.
mState
uint8_t mState
מצב האובייקט קישור הנוכחי.
ניתן להריץ רק פעולת 'השלמה' אחת בכל פעם. בכל מקרה, אם מבקשים להשלים קישור מלא, הפונקציה פשוט מפעילה באופן מיידי את פונקציית האישור. משתנה המצב שבהמשך עוקב אחר המצב הנוכחי ומתפקד כנעילה.
mTransport
uint8_t mTransport
ההעברה שבה משתמשים כדי להשלים את הקישור הזה.
(לקריאה בלבד)
ערכים אפשריים ל-mTransport מוגדרים ב-DMConstants.h.
תפקידים ציבוריים
CompleteConfirm
void CompleteConfirm( WeaveConnection *aConnection )
CompleteConfirm
void CompleteConfirm( StatusReport & aReport )
טיפול בכשל בבקשת הקישור.
פרטים | |||
---|---|---|---|
פרמטרים |
|
CompleteConfirm
void CompleteConfirm( void )
טיפול באישור של בקשת חיוב.
CompleteRequest
WEAVE_ERROR CompleteRequest( ProtocolEngine *aEngine )
מבקשים להשלים קישור.
השלמת קישור, לפחות עבור חיבורים שמחייבים TCP, מתבצעת ביחס לאובייקט ProtocolEngine מסוים, שמספק גישה למופע של ExchangeManager.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכים מוחזרים |
|
||||||
החזרות |
אחרת, כל שגיאה מסוג WEAVE_ERROR הוחזרה במהלך ניסיון ההתחברות.
|
קישור
WEAVE_ERROR Connect( WeaveConnection *aConnection )
צריך להשלים קישור TCP על ידי מתן חיבור מלא.
לא ניתן להשתמש בקישור TCP שאותחל לאחרונה לפני השלמתו. בדרך כלל הדבר נעשה על פי דרישה כאשר האפליקציה מנסה להשתמש בקישור כדי לשלוח הודעות, אבל ניתן להשלים זאת גם באופן מפורש באמצעות חיבור ל-Weave.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכים מוחזרים |
|
סיים
void Finalize( void )
'לא הושלם' לקישור ומשחררים אותו.
לקישורים יכול להיות מצב שדורש ניקוי. למשל, סגירת חיבור, שמטופלת באמצעות השיטה Uncomplete() בנוסף למצב ש פשוט נוקה למצב הראשוני שלו על ידי השיטה Free(). השיטה הזו מפעילה את שניהם, בעיקר מטעמי נוחות.
ראו גם:סיום(WEAVE_ERROR)
סיים
void Finalize( WEAVE_ERROR aErr )
'לא הושלם' לקישור ומשחררים אותו.
לקישורים יכול להיות מצב שדורש ניקוי. למשל, סגירת חיבור, שמטופלת באמצעות השיטה Uncomplete() בנוסף למצב ש פשוט נוקה למצב הראשוני שלו על ידי השיטה Free(). השיטה הזו מפעילה את שניהם, בעיקר מטעמי נוחות.
פרטים | |||
---|---|---|---|
פרמטרים |
|
סיום(ביטול)
חינם
void Free( void )
מבטלים את מצב הקישור.
החזרת כל מצב הקישור ללא תנאי למצב המקורי שלו.
GetExchangeCtx
ExchangeContext * GetExchangeCtx( WeaveExchangeManager *aExchangeMgr, void *aAppState )
מפיקים אובייקט ExchangeContext מ-Binding.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
החזרות |
מצביע לאובייקט ExchangeContext או NULL במקרה של כשל.
|
IncompleteIndication
void IncompleteIndication( StatusReport & aReport )
טפל בכשל של קישור.
השיטה הזו מופעלת, וכתוצאה מכך מפעילה גורמי handler בשכבה גבוהה יותר כשהקישור נכשל אחרי ההשלמה, כלומר אחרי ההפעלה של CompleteConfirm() עם סטטוס שמציין הצלחה.
פרטים | |||
---|---|---|---|
פרמטרים |
|
CompleteConfirm(StatusReport &aReport).
הפעלה
WEAVE_ERROR Init( const uint64_t & aPeerNodeId )
אפשר להפעיל קישור עם מזהה צומת בלבד.
פעולה זו יוצרת קישור לתעבורת ברירת המחדל שהוגדרה.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
ערכים מוחזרים |
|
הפעלה
WEAVE_ERROR Init( const uint64_t & aPeerNodeId, uint8_t aTransport )
מפעילים אובייקט קישור על סמך מזהה העמיתים וההעברה.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
ערכים מוחזרים |
|
הפעלה
WEAVE_ERROR Init( const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode )
מפעילים אובייקט קישור לנקודת קצה של שירות.
כך מבצעים קישור לנקודת קצה מסוימת בשירות Nest. קישור מהסוג הזה מחייב תהליך השלמה רב-שלבי, שעשוי לכלול אכלוס או עדכון של המטמון של ספריית השירות המקומית. בדרך כלל התהליך הזה מוסתר מהאפליקציה, אבל המשמעות שלו היא שייתכן ששגיאות שיתרחשו בשלב מאוחר יותר בתהליך יועברו, בדרך כלל באמצעות הקריאה החוזרת (callback) הרלוונטית, לאחר – לפעמים זמן רב אחרי – הבקשה המקורית להשתמש בקישור (ולסיים אותו).
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכים מוחזרים |
|
הפעלה
WEAVE_ERROR Init( WeaveConnection *aConnection )
מאתחלים אובייקט Binding באמצעות WeaveConnection.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
ערכים מוחזרים |
|
IsComplete
bool IsComplete( void )
בודקים אם הקישור הושלם.
פרטים | |
---|---|
החזרות |
TRUE אם הוא מלא, FALSE אם לא.
|
CompleteRequest(ProtocolEngine *aEngine)
IsFree
bool IsFree( void )
הבדיקה לא כרוכה בתשלום.
בהקשר הזה, המונח "Free" פירושו "יש מזהה של צומת עמית מוגדר". צריך להתייחס ל-IsFree() כמשמעותה: "אפשר לקרוא לה Free() ולא נעשה בה שימוש מאז".
פרטים | |
---|---|
החזרות |
'true' אם הקישור הוא חופשי, false אם לא.
|
UncompleteRequest
void UncompleteRequest( void )
צריך לגרום לקישור להיות חלקי.
בעיקרון, קישור יהיה במצב 'לא גמור' לאחר שהשיטה הזו הופעלה עליו, אבל באופן מתוחכם יותר, צריך לנקות גם כל מצב רלוונטי שלא כלול בקישור עצמו, למשל חיבור TCP. אפליקציות יכולות לשקול להפעיל את UncompleteRequest() כחלק מניקוי השגיאה.
ראו גם:UncompleteRequest(WEAVE_ERROR )
UncompleteRequest
void UncompleteRequest( WEAVE_ERROR aErr )
צריך לגרום לקישור להיות חלקי.
בעיקרון, קישור יהיה במצב 'לא גמור' לאחר שהשיטה הזו הופעלה עליו, אבל באופן מתוחכם יותר, צריך לנקות גם כל מצב רלוונטי שלא כלול בקישור עצמו, למשל חיבור TCP. אפליקציות יכולות לשקול להפעיל את UncompleteRequest() כחלק מניקוי השגיאה.
פרטים | |||
---|---|---|---|
פרמטרים |
|
UncompleteRequest(void)
~קישור
virtual ~Binding( void )
ה-Destructor לאובייקטים מקשרים.
ניקוי כל המצב הפנימי ובנוסף, אם צריך, סוגר חיבורים פתוחים.