nl:: Weave:: Profiles:: DataManagement_Legacy:: ProtocolEngine
זהו שיעור מופשט.
#include <src/lib/profiles/data-management/Legacy/ProtocolEngine.h>
סוג המנוע של פרוטוקול WDM.
סיכום
בישות לניהול נתונים, לקוח או בעל תוכן דיגיטלי, יש רכיב של מנוע פרוטוקול ורכיב של מנהל הנתונים. המחלקה המופשטת הזו מייצגת את התכונות הנפוצות של מנוע הפרוטוקול.
ירושה
מחלקות משנה מוכרות ישירות:nl::Weave::Profiles::DataManagement_Legacy::DMClient
nl::Weave::Profiles::DataManagement_Legacy::DMPublisher
בנייה |
|
---|---|
ProtocolEngine(void)
|
|
~ProtocolEngine(void)
|
מאפיינים מוגנים |
|
---|---|
mBindingTable[kBindingTableSize]
|
ב-ProtocolEngine יש טבלה מקשרת. אם המנוע אחראי לכל פעולה אחרת מלבד קבלת התראות משידור, סביר להניח שהוא צריך להכיל לפחות רשומה אחת.
|
mExchangeMgr
|
|
mResponseTimeout
|
uint32_t
|
mTransactionTable[kTransactionTableSize]
|
פונקציות ציבוריות |
|
---|---|
BindConfirm(Binding *aBinding)
|
virtual WEAVE_ERROR
טיפול באישור שבקשת הקישור הושלמה בהצלחה.
|
BindConfirm(Binding *aBinding, StatusReport & aReport)
|
virtual WEAVE_ERROR
טיפול באישור שבקשת הקישור נכשלה.
|
BindRequest(const uint64_t & aPeerNodeId, uint8_t aTransport)
|
מבקשים קישור באמצעות מזהה צומת ידוע של אפליקציות להשוואה ומציין תעבורה.
|
BindRequest(const uint64_t & aPeerNodeId)
|
קישור לעמית מוכר באמצעות תעבורת הנתונים שמוגדרת כברירת מחדל.
|
BindRequest(nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
|
|
BindRequest(WeaveConnection *aConnection)
|
אפשר לבקש קישור באמצעות חיבור פעיל של Weave.
|
IncompleteIndication(Binding *aBinding, StatusReport & aReport)
|
virtual void
טיפול בסימון שקישור נכשל.
|
IncompleteIndication(const uint64_t & aPeerNodeId, StatusReport & aReport)=0
|
virtual void
יש לטפל בסימון לכך שקישור כבר לא הושלם.
|
Init(WeaveExchangeManager *aExchangeMgr)
|
virtual WEAVE_ERROR
|
Init(WeaveExchangeManager *aExchangeMgr, uint32_t aResponseTimeout)
|
virtual WEAVE_ERROR
|
UnbindRequest(const uint64_t & aPeerNodeId)
|
void
מבקשים לבטל קישור ולהסיר אותו מטבלת הקישורים.
|
UnbindRequest(const uint64_t & aPeerNodeId, WEAVE_ERROR aErr)
|
void
מבקשים לבטל קישור ולהסיר אותו מטבלת הקישורים.
|
פונקציות מוגנות |
|
---|---|
Clear(void)
|
void
|
ClearBindingTable(void)
|
void
|
ClearTransactionTable(void)
|
void
|
DequeueTransaction(DMTransaction *aTransaction)
|
void
|
EnqueueTransaction(DMTransaction *aTransaction, Binding *aBinding)
|
|
EnqueueTransaction(DMTransaction *aTransaction)
|
|
FailTransactions(Binding *aBinding, StatusReport & aReport)
|
bool
|
Finalize(void)
|
virtual void
|
FinalizeBindingTable(void)
|
void
|
FinalizeTransactionTable(void)
|
void
|
FinalizeTransactions(Binding *aBinding)
|
void
|
FromExchangeCtx(ExchangeContext *aExchangeCtx)
|
Binding *
|
GetBinding(const uint64_t & aPeerNodeId)
|
Binding *
|
NewBinding(void)
|
Binding *
|
StartTransaction(DMTransaction *aTransaction, Binding *aBinding)
|
|
StartTransaction(DMTransaction *aTransaction)
|
|
StatusResponse(ExchangeContext *aExchangeCtx, StatusReport & aStatus)
|
שיעורים |
|
---|---|
nl:: |
מאפיינים מוגנים
mBindingTable
Binding mBindingTable[kBindingTableSize]
ב-ProtocolEngine יש טבלה מקשרת. אם המנוע אחראי לכל פעולה אחרת מלבד קבלת התראות משידור, סביר להניח שהוא צריך להכיל לפחות רשומה אחת.
קישורים מתווספים לאינדקס בדרך כלל לפי מזהה הצומת. כלומר, לכל מנוע יכול להיות קישור אחד בלבד לנקודת קצה (endpoint) נתונה של שירות.
במפרט WDM המונח הזה נקרא 'קישור ברירת מחדל' זהו המקום שאליו נשלחות ההודעות אם לא סופק יעד מפורש. הרכיב הזה יהיה בשימוש בעיקר במכשירים פשוטים מאוד עם קישור יחיד או עם מספר קטן של קישורים, ולמטרות אחרות, זהו הקישור הראשון שייווצר.
mExchangeMgr
WeaveExchangeManager * mExchangeMgr
mResponseTimeout
uint32_t mResponseTimeout
mTransactionTable
TransactionTableEntry mTransactionTable[kTransactionTableSize]
פונקציות ציבוריות
BindConfirm
virtual WEAVE_ERROR BindConfirm( Binding *aBinding )
טיפול באישור שבקשת הקישור הושלמה בהצלחה.
לאחר השלמת הקישור, מנוע הפרוטוקול עובר בטבלת הטרנזקציות ומתחיל עסקאות שתלויות בקישור הזה.
פרטים | |||
---|---|---|---|
פרמטרים |
|
||
החזרות |
WEAVE_NO_ERROR בהצלחה. אחרת, מוחזר WEAVE_ERROR שמשקף חוסר יכולת להתחיל עסקה.
|
BindConfirm
virtual WEAVE_ERROR BindConfirm( Binding *aBinding, StatusReport & aReport )
טיפול באישור שבקשת הקישור נכשלה.
כשבקשת קישור נכשלת, מנוע הפרוטוקול חייב לעבור דרך טבלת הטרנזקציות ולהיכשל בטרנזקציות בהתאם לקישור.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
החזרות |
BindRequest
WEAVE_ERROR BindRequest( const uint64_t & aPeerNodeId, uint8_t aTransport )
מבקשים קישור באמצעות מזהה צומת ידוע של אפליקציות להשוואה ומציין תעבורה.
הבקשה הזו מגדירה קישור לישות השכנה, על סמך מזהה צומת של אפליקציה ומפרט תעבורה. הצעת המחיר מחייבת השלמה נוספת רק אם התעבורה היא TCP. אם כבר קיים קישור לקישור, עושים בו שימוש חוזר.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
החזרות |
WEAVE_NO_ERROR כראוי או WEAVE_ERROR_NO_MEMORY אם טבלת הקישור מלאה. אחרת, מחזירה WEAVE_ERROR שמשקף כשל באתחול הקישור.
|
WeaveTransportOption
BindRequest
WEAVE_ERROR BindRequest( const uint64_t & aPeerNodeId )
קישור לעמית מוכר באמצעות תעבורת הנתונים שמוגדרת כברירת מחדל.
פרטים | |||
---|---|---|---|
פרמטרים |
|
||
החזרות |
WEAVE_NO_ERROR בהצלחה. אחרת, מחזירה WEAVE_ERROR שמשקף את הכשל בפעולת הקישור.
|
BindRequest
WEAVE_ERROR BindRequest( nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode )
BindRequest
WEAVE_ERROR BindRequest( WeaveConnection *aConnection )
אפשר לבקש קישור באמצעות חיבור פעיל של Weave.
אפשר ליצור קישור גם באמצעות חיבור קיים ופתוח. חשוב לשים לב שקישורים שנוצרים באופן הזה לא מצריכים השלמה נוספת.
פרטים | |||
---|---|---|---|
פרמטרים |
|
||
החזרות |
WEAVE_NO_ERROR כראוי או WEAVE_ERROR_NO_MEMORY אם טבלת הקישור מלאה. אחרת, מוחזרת שגיאה שמשקפת כשל בהתחלת הקישור.
|
IncompleteIndication
virtual void IncompleteIndication( Binding *aBinding, StatusReport & aReport )
טיפול בסימון שקישור נכשל.
כשקישור הופך ללא הושלם, כלומר כשהחיבור נסגר עבור קישור TCP, מנוע הפרוטוקול חייב להיכשל בכל הטרנזקציות שתלויות בו, כולל קריאה ל-handlers של הסטטוס. בנוסף, האינדיקציה החלקית מועברת לכל אובייקט של מחלקה-על שמטמיע את הצורה החלופית של השיטה הזו שלוקחת מזהה של אפליקציה להשוואה.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
IncompleteIndication
virtual void IncompleteIndication( const uint64_t & aPeerNodeId, StatusReport & aReport )=0
יש לטפל בסימון לכך שקישור כבר לא הושלם.
צריך להשתמש בשיטה הזו כדי לקבל מידע על כשל בקישור, בשכבות גבוהות יותר, שמעבירות את המזהה של אפליקציה להשוואה יחד עם דוח סטטוס. למעשה, מכיוון שהשיטה הזו היא אפס וירטואלית, כל מחלקה של DMClient או DMPublisher חייבת לספק הטמעה.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
Init
virtual WEAVE_ERROR Init( WeaveExchangeManager *aExchangeMgr )
Init
virtual WEAVE_ERROR Init( WeaveExchangeManager *aExchangeMgr, uint32_t aResponseTimeout )
ProtocolEngine
ProtocolEngine( void )
UnbindRequest
void UnbindRequest( const uint64_t & aPeerNodeId )
מבקשים לבטל קישור ולהסיר אותו מטבלת הקישורים.
כשקישור עובר למצב 'לא קשור' יש להסיר גם את כל העסקאות שתלויות כרגע בנתונים האלה. השיטה הזו משלימה את כל העסקאות באמצעות הקישור הזה באופן אוטומטי.
פרטים | |||
---|---|---|---|
פרמטרים |
|
UnbindRequest(const uint64_t, WEAVE_ERROR)
UnbindRequest
void UnbindRequest( const uint64_t & aPeerNodeId, WEAVE_ERROR aErr )
מבקשים לבטל קישור ולהסיר אותו מטבלת הקישורים.
כשקישור עובר למצב 'לא קשור' יש להסיר גם את כל העסקאות שתלויות כרגע בנתונים האלה. השיטה הזו משלימה את כל העסקאות באמצעות הקישור הזה באופן אוטומטי.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
UnbindRequest(const uint64_t)
~ProtocolEngine
virtual ~ProtocolEngine( void )
פונקציות מוגנות
ניקוי
void Clear( void )
ClearBindingTable
void ClearBindingTable( void )
ClearTransactionTable
void ClearTransactionTable( void )
DequeueTransaction
void DequeueTransaction( DMTransaction *aTransaction )
EnqueueTransaction
WEAVE_ERROR EnqueueTransaction( DMTransaction *aTransaction, Binding *aBinding )
EnqueueTransaction
WEAVE_ERROR EnqueueTransaction( DMTransaction *aTransaction )
FailTransactions
bool FailTransactions( Binding *aBinding, StatusReport & aReport )
סיום
virtual void Finalize( void )
FinalizeBindingTable
void FinalizeBindingTable( void )
FinalizeTransactionTable
void FinalizeTransactionTable( void )
FinalizeTransactions
void FinalizeTransactions( Binding *aBinding )
FromExchangeCtx
Binding * FromExchangeCtx( ExchangeContext *aExchangeCtx )
GetBinding
Binding * GetBinding( const uint64_t & aPeerNodeId )
NewBinding
Binding * NewBinding( void )
StartTransaction
WEAVE_ERROR StartTransaction( DMTransaction *aTransaction, Binding *aBinding )