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{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
טיפוסים בני מנייה (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.

פונקציות ציבוריות

קישור

 Binding(
  void
)

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

ניקוי כל המצב הפנימי.

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

טיפול באישור של בקשת קישור.

פרטים
פרמטרים
[in] aConnection
מצביע אל WeaveConnection פעיל אל יעד הקישור.

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

טיפול בכשל בבקשת קישור.

פרטים
פרמטרים
[in] aReport
הפניה לאובייקט StatusReport (דוח סטטוס) שמתאר את הכשל.

CompleteConfirm

void CompleteConfirm(
  void
)

טיפול באישור של בקשת קישור.

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

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

השלמת קישור מתבצעת, לפחות עבור קישורים המחייבים TCP, מתבצעת ביחס לאובייקט ProtocolEngine מסוים, שמספק גישה למכונה של ExchangeManager.

פרטים
פרמטרים
[in] aEngine
מצביע לאובייקט ProtocolEngine שבשבילו מתבצעת ההשלמה.
מוחזר ערכים
WEAVE_NO_ERROR
הצלחה.
WEAVE_ERROR_INCORRECT_STATE
אם הקישור כבר הושלם.
WEAVE_ERROR_NO_MEMORY
אם נדרש חיבור ואין חיבור זמין
החזרות
אחרת, כל שגיאה מסוג WEAVE_ERROR מוחזרת במהלך ניסיון ההתחברות.

התחברות

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

השלמת קישור TCP על ידי מתן חיבור מלא.

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

פרטים
פרמטרים
[in] aConnection
מצביע אל WeaveConnection ששימש להשלמת הקישור.
מוחזר ערכים
WEAVE_NO_ERROR
הצלחה.
WEAVE_ERROR_INCORRECT_STATE
אם הקישור כבר יש חיבור.
WEAVE_ERROR_INVALID_ARGUMENT
אם החיבור הוא NULL.

סיום

void Finalize(
  void
)

'לא הושלם' ומשחררים אותם.

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

למידע נוסף:
סיום(WEAVE_ERROR)

סיום

void Finalize(
  WEAVE_ERROR aErr
)

'לא הושלם' ומשחררים אותם.

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

פרטים
פרמטרים
[in] aErr
קוד השגיאה הזה מציין את הסיבה לבקשה. אם הוא לא WEAVE_NO_ERROR, ייתכן שחיבור ה-TCP יבוטל.
למידע נוסף:
Finalize(ve)

בחינם

void Free(
  void
)

ניקוי מצב הקישור.

החזרת כל מצב הקישור למצב המקורי שלו ללא תנאי.

GetExchangeCtx

ExchangeContext * GetExchangeCtx(
  WeaveExchangeManager *aExchangeMgr,
  void *aAppState
)

מפיקים אובייקט ExchangeContext מ-Binding.

פרטים
פרמטרים
[in] aExchangeMgr
מצביע אל מנהל Exchange שממנו צריך לבקש הקשר.
[in] aAppState
מצביע ריק לאובייקט של מצב אפליקציה שיישמר בהקשר של Exchange לשימוש מאוחר יותר.
החזרות
מצביע לאובייקט ExchangeContext או ל-NULL במקרה של כשל.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

מה עושים אם קישור נכשל?

השיטה הזו מופעלת, וכתוצאה מכך מפעילה handlers בשכבה גבוהה יותר כשהקישור נכשל אחרי הסיום, כלומר אחרי הפעלת CompleteConfirm() עם סטטוס שמעיד על הצלחה.

פרטים
פרמטרים
[in] aReport
אזכור בדוח Status Report של הבעיה.
למידע נוסף:
CompleteConfirm(StatusReport &amp;aReport).

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

מאתחלים קישור באמצעות מזהה צומת בלבד.

התוצאה תהיה קישור לתעבורה שהוגדרה כברירת מחדל.

פרטים
פרמטרים
[in] aPeerNodeId
הפניה למזהה 64 ביט של היעד המקשר.
מוחזר ערכים
WEAVE_NO_ERROR
הצלחה.
WEAVE_ERROR_INVALID_ARGUMENT
אם הקישור שצוין נמוך מדי.

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

מאתחלים אובייקט Binding על סמך מזהה של אפליקציה להשוואה והעברה.

פרטים
פרמטרים
[in] aPeerNodeId
הפניה למזהה הצומת של 64 ביט של יעד הקישור.
[in] aTransport
מפרט התעבורה מ-WeaveTransportOption.
מוחזר ערכים
WEAVE_NO_ERROR
הצלחה.
WEAVE_ERROR_INVALID_ARGUMENT
אם הקישור שצוין נמוך מדי.

Init

WEAVE_ERROR Init(
  const uint64_t & aServiceEpt,
  WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

מאתחלים אובייקט Binding לנקודת קצה של שירות.

כך ניתן לקשר לנקודת קצה מסוימת בשירות Nest. קישור מהסוג הזה מחייב תהליך השלמה רב-שלבי, שעשוי לכלול אכלוס או עדכון של המטמון של ספריית השירות המקומית. ברוב המקרים התהליך הזה מוסתר מהאפליקציה, אבל המשמעות היא ששגיאות שנובעות בשלב מאוחר יותר בתהליך עשויות להישלח, בדרך כלל באמצעות ה'אישור' הרלוונטי. קריאה חוזרת (callback), לאחר – לפעמים זמן רב לאחר מכן – הבקשה המקורית להשתמש בקישור (ולשלם) אותו.

פרטים
פרמטרים
[in] aServiceEpt
הפניה למזהה 64 ביט של נקודת הקצה של Weave Service.
[in] aServiceMgr
הפניה למכונה של מנהל השירות כדי לחפש רמת שירות ולהתחבר אליה.
[in] aAuthMode
מצב האימות שבו צריך להשתמש בהתחברות.
מוחזר ערכים
WEAVE_NO_ERROR
הצלחה.
WEAVE_ERROR_INVALID_ARGUMENT
אם הקישור שצוין נמוך מדי.

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

מאתחלים אובייקט Binding באמצעות WeaveConnection.

פרטים
פרמטרים
[in] aConnection
מצביע אל WeaveConnection שישמש כבסיס לקישור.
מוחזר ערכים
WEAVE_NO_ERROR
הצלחה.
WEAVE_ERROR_INVALID_ARGUMENT
אם הקישור שצוין נמוך מדי.

IsComplete

bool IsComplete(
  void
)

צריך לבדוק אם הקישור הושלם.

פרטים
החזרות
True אם הוא שלם, אחרת false.
למידע נוסף:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

אפשר לבצע את הבדיקה ללא עלות.

"חינם" בהקשר הזה, פירוש הדבר הוא "יש צומת מוגדר של אפליקציה להשוואה ID". IsFree() should be thought of as meaning &quot;has had Free() שנקראו והוא לא היה בשימוש מאז".

פרטים
החזרות
true אם הקישור בחינם, אחרת false.

UncompleteRequest

void UncompleteRequest(
  void
)

לגרום לקישור להיות חלקי.

בעיקרון, הקישור צריך להיות את המצב הזה אחרי שהשיטה הזו נקראת, אבל בעיקרון, כל מצב רלוונטי שלא כלול בקישור עצמו, למשל צריך לנקות גם את חיבור TCP. יכול להיות שאפליקציות יחשבו להפעיל את UncompleteRequest() כחלק מהניקוי של שגיאה.

למידע נוסף:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

לגרום לקישור להיות חלקי.

בעיקרון, הקישור צריך להיות אחרי שהשיטה הזו נקראת, אבל בהרחבה, כל מצב רלוונטי שלא כלול בקישור עצמו, למשל צריך לנקות גם את חיבור TCP. יכול להיות שאפליקציות יחשבו להפעיל את UncompleteRequest() כחלק מהניקוי של שגיאה.

פרטים
פרמטרים
[in] aErr
אם לא WEAVE_NO_ERROR, החיבור הקיים, אם קיים, יבוטל במקום ייסגר באלגנטיות.
למידע נוסף:
UncompleteRequest(void)

~קישור

virtual  ~Binding(
  void
)

הכלי להרוס אובייקטים של קישור.

ניקוי כל המצב הפנימי, ובמקרה הצורך, סוגר את החיבורים הפתוחים.