nl:: Weave:: Profiles:: DataManagement_Legacy:: Binding
#include <src/lib/profiles/data-management/Legacy/Binding.h>
סיווג Binding מנהל את מצב התקשורת מטעם ישות אפליקציה באמצעות Weave.
סיכום
כשאפליקציה רוצה להשתמש ב-Weave כדי לתקשר עם ישות מרוחקת, יש מגוון רחב של אפשרויות. כיתת הקישור מאגדת את האפשרויות האלה ומארגנת אותן כך שהדברים הפשוטים קלים והדברים הקשים יותר ניתנים לפחות לעריכה. האפשרויות המוצגות כוללות:
- תקשורת UDP של unicast עם צומת ידוע של אפליקציות להשוואה.
- שידור UDP עם "כל" .
- תקשורת WRMP של unicast עם צומת של רשתות שכנות (peering).
- תקשורת TCP עם צומת ידוע של אפליקציות להשוואה.
- תקשורת TCP עם נקודת קצה (endpoint) ידועה של שירות באמצעות מכונה של מנהל שירות כדי להגדיר הגדרות.
- תקשורת TCP מבוססת על חיבור מוגדר מראש.
בנייה |
|
---|---|
Binding(void)
בנאי ברירת המחדל של אובייקטים מסוג קישור.
|
|
~Binding(void)
הכלי להרוס אובייקטים של קישור.
|
סוגים ציבוריים |
|
---|---|
@165{
|
טיפוסים בני מנייה (enum) קבוצת מצבי האובייקט Binding. |
מאפיינים ציבוריים |
|
---|---|
mAuthMode
|
WeaveAuthMode
מצב האימות של Weave שבו יש להשתמש.
|
mConnection
|
מצביע על החיבור ל-Weave שנמצא כרגע בשימוש בקישור הזה.
|
mEngine
|
מצביע לאובייקט ProtocolEngine שקשור ל-Binding הזה.
|
mPeerNodeId
|
uint64_t
מזהה הצומת של 64 ביט של יעד הקישור.
|
mServiceMgr
|
מצביע לאובייקט (אופציונלי) של ServiceManager שישמש להשלמת הקישור הזה.
|
mState
|
uint8_t
מצב האובייקט הנוכחי Binding.
|
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)
|
מאתחלים אובייקט Binding על סמך מזהה של אפליקציה להשוואה והעברה.
|
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
|
מפעילים אובייקט Binding לנקודת קצה של שירות.
|
Init(WeaveConnection *aConnection)
|
מאתחלים אובייקט Binding באמצעות WeaveConnection.
|
IsComplete(void)
|
bool
צריך לבדוק אם הקישור הושלם.
|
IsFree(void)
|
bool
אפשר לבצע את הבדיקה ללא עלות.
|
UncompleteRequest(void)
|
void
לגרום לקישור להיות חלקי.
|
UncompleteRequest(WEAVE_ERROR aErr)
|
void
לגרום לקישור להיות חלקי.
|
סוגים ציבוריים
@165
@165
קבוצת מצבי האובייקט Binding.
מאפיינים | |
---|---|
kState_Complete
|
מצב הקישור הושלם ומוכן לשימוש. |
kState_Completing
|
מצב הקישור שנמצא בתהליך סיום. |
kState_Incomplete
|
המצב הראשוני (והסופי) של קישור. |
מאפיינים ציבוריים
mAuthMode
WeaveAuthMode mAuthMode
מצב האימות של Weave שבו יש להשתמש.
(READ_ONLY)
זהו מצב האימות שבו נעשה שימוש בכל התקשורת שמפוקחת על-ידי הקישור הזה.
mConnection
WeaveConnection * mConnection
מצביע על החיבור ל-Weave שנמצא כרגע בשימוש בקישור הזה.
(לקריאה בלבד)
קישור TCP עשוי לאתחל בחיבור מיידי או להקצות אותו בזמן ההשלמה.
mEngine
ProtocolEngine * mEngine
מצביע לאובייקט ProtocolEngine שקשור ל-Binding הזה.
בדרך כלל, הקישור מתבצע ביחס למנוע פרוטוקול מסוים, שמשמש בעיקר כדרך לגשת ל-MessageLayer. זה המקום שבו אנחנו עוקבים אחרי התופעה.
mPeerNodeId
uint64_t mPeerNodeId
מזהה הצומת של 64 ביט של יעד הקישור.
(לקריאה בלבד)
לכל קישור יש ישות יעד, שנקראת כאן. בנוסף למזהה של צומת Weave, יכול להיות שהשם יהיה נקודת קצה (endpoint) של שירות.
mServiceMgr
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr
מצביע לאובייקט (אופציונלי) של ServiceManager שישמש להשלמת הקישור הזה.
(לקריאה בלבד)
כשמקשרים את החשבון לשירות Weave, ניתן לספק מזהה נקודת קצה (endpoint) של שירות בגרסת 64 ביט בזמן האתחול במקום מזהה צומת Weave. במקרה הזה, נדרש גם אובייקט ServiceManager כדי להשלים את הקישור. קישורי TCP או WRMP רגילים לא דורשים אובייקט ServiceManager.
mState
uint8_t mState
מצב האובייקט הנוכחי Binding.
רק 'בוצעה' אחת הפעולה יכולה לרוץ בכל פעם, ובכל מקרה אם תבקשו להשלים קישור שהושלם, היא רק תפעיל מיד את פונקציית האישור. משתנה המצב הבא עוקב אחרי המצב הנוכחי ומשמש כנעילה.
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(). השיטה הזו, בעיקר מטעמי נוחות, מפעילה את שניהם.
פרטים | |||
---|---|---|---|
פרמטרים |
|
Finalize(ve)
בחינם
void Free( void )
ניקוי מצב הקישור.
החזרת כל מצב הקישור למצב המקורי שלו ללא תנאי.
GetExchangeCtx
ExchangeContext * GetExchangeCtx( WeaveExchangeManager *aExchangeMgr, void *aAppState )
מפיקים אובייקט ExchangeContext מ-Binding.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
החזרות |
מצביע לאובייקט ExchangeContext או ל-NULL במקרה של כשל.
|
IncompleteIndication
void IncompleteIndication( StatusReport & aReport )
מה עושים אם קישור נכשל?
השיטה הזו מופעלת, וכתוצאה מכך מפעילה handlers בשכבה גבוהה יותר כשהקישור נכשל אחרי הסיום, כלומר אחרי הפעלת CompleteConfirm() עם סטטוס שמעיד על הצלחה.
פרטים | |||
---|---|---|---|
פרמטרים |
|
CompleteConfirm(StatusReport &aReport).
Init
WEAVE_ERROR Init( const uint64_t & aPeerNodeId )
מאתחלים קישור באמצעות מזהה צומת בלבד.
התוצאה תהיה קישור לתעבורה שהוגדרה כברירת מחדל.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
מוחזר ערכים |
|
Init
WEAVE_ERROR Init( const uint64_t & aPeerNodeId, uint8_t aTransport )
מאתחלים אובייקט Binding על סמך מזהה של אפליקציה להשוואה והעברה.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
מוחזר ערכים |
|
Init
WEAVE_ERROR Init( const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode )
מאתחלים אובייקט Binding לנקודת קצה של שירות.
כך ניתן לקשר לנקודת קצה מסוימת בשירות Nest. קישור מהסוג הזה מחייב תהליך השלמה רב-שלבי, שעשוי לכלול אכלוס או עדכון של המטמון של ספריית השירות המקומית. ברוב המקרים התהליך הזה מוסתר מהאפליקציה, אבל המשמעות היא ששגיאות שנובעות בשלב מאוחר יותר בתהליך עשויות להישלח, בדרך כלל באמצעות ה'אישור' הרלוונטי. קריאה חוזרת (callback), לאחר – לפעמים זמן רב לאחר מכן – הבקשה המקורית להשתמש בקישור (ולשלם) אותו.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
מוחזר ערכים |
|
Init
WEAVE_ERROR Init( WeaveConnection *aConnection )
מאתחלים אובייקט Binding באמצעות WeaveConnection.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
מוחזר ערכים |
|
IsComplete
bool IsComplete( void )
צריך לבדוק אם הקישור הושלם.
פרטים | |
---|---|
החזרות |
True אם הוא שלם, אחרת false.
|
CompleteRequest(ProtocolEngine *aEngine)
IsFree
bool IsFree( void )
אפשר לבצע את הבדיקה ללא עלות.
"חינם" בהקשר הזה, פירוש הדבר הוא "יש צומת מוגדר של אפליקציה להשוואה ID". IsFree() should be thought of as meaning "has had 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 )
הכלי להרוס אובייקטים של קישור.
ניקוי כל המצב הפנימי, ובמקרה הצורך, סוגר את החיבורים הפתוחים.