nl:: Weave:: Profiles:: DataManagement_Legacy:: ProtocolEngine
זו כיתה מופשטת.
#include <src/lib/profiles/data-management/Legacy/ProtocolEngine.h>
מחלקת המנוע של פרוטוקול WDM.
סיכום
לישות לניהול נתונים, ללקוח או לבעל התוכן הדיגיטלי, יש רכיב של מנוע פרוטוקול ורכיב של מנהל נתונים. המחלקה המופשטת הזו מייצגת את התכונות הנפוצות של מנוע הפרוטוקול.
ירושה
Direct known Subclasses: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 יש טבלה מחייבת, שאם המנוע יהיה אחראי לכל דבר מעבר לקבלת התראות משודרות, סביר להניח שהוא צריך להכיל לפחות רשומה אחת.
לרוב, קישורים נוספים לאינדקס לפי מזהה צומת. כלומר, לכל מנוע יכול להיות רק קישור אחד לנקודת קצה נתונה של השירות.
במפרט 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, מנגנון הפרוטוקול חייב להיכשל בכל העסקאות התלויות בו, כולל קריאה למטפלי הסטטוס שלו. בנוסף, ההתוויה החלקית מועברת לכל אובייקט של מחלקת-על שמטמיע את השיטה החלופית של השיטה הזו שמקבל מזהה עמית.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
IncompleteIndication
virtual void IncompleteIndication( const uint64_t & aPeerNodeId, StatusReport & aReport )=0
טפל באינדיקציה לכך שהקישור הפך לבלתי שלם.
שכבות גבוהות יותר שרוצות לקבל מידע על כשל מחייב צריכות להשתמש בשיטה הזו, שפשוט מעבירה את מזהה העמית יחד עם דוח סטטוס. למעשה, מכיוון שהשיטה הזו היא חסרת תוקף וירטואלי, כל מחלקה משנית של DMClient או DMPublisher חייבת לספק הטמעה.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
הפעלה
virtual WEAVE_ERROR Init( WeaveExchangeManager *aExchangeMgr )
הפעלה
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 )