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)
GetBinding(const uint64_t & aPeerNodeId)
NewBinding(void)
StartTransaction(DMTransaction *aTransaction, Binding *aBinding)
StartTransaction(DMTransaction *aTransaction)
StatusResponse(ExchangeContext *aExchangeCtx, StatusReport & aStatus)

שיעורים

nl::Weave::Profiles::DataManagement_Legacy::ProtocolEngine::DMTransaction

מאפיינים מוגנים

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
)

טיפול באישור שבקשת הקישור הושלמה בהצלחה.

לאחר השלמת הקישור, מנוע הפרוטוקול עובר בטבלת הטרנזקציות ומתחיל עסקאות שתלויות בקישור הזה.

פרטים
פרמטרים
[in] aBinding
מצביע לקישור שהושלם.
החזרות
WEAVE_NO_ERROR בהצלחה. אחרת, מוחזר WEAVE_ERROR שמשקף חוסר יכולת להתחיל עסקה.

BindConfirm

virtual WEAVE_ERROR BindConfirm(
  Binding *aBinding,
  StatusReport & aReport
)

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

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

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

BindRequest

WEAVE_ERROR BindRequest(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

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

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

פרטים
פרמטרים
[in] aPeerNodeId
הפניה למזהה הצומת של 64 ביט של ישות השכנה שהיא היעד המקשר.
[in] aTransport
התעבורה שבה צריך להשתמש.
החזרות
WEAVE_NO_ERROR כראוי או WEAVE_ERROR_NO_MEMORY אם טבלת הקישור מלאה. אחרת, מחזירה WEAVE_ERROR שמשקף כשל באתחול הקישור.
למידע נוסף:
WeaveTransportOption

BindRequest

WEAVE_ERROR BindRequest(
  const uint64_t & aPeerNodeId
)

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

פרטים
פרמטרים
[in] aPeerNodeId
הפניה למזהה הצומת של 64 ביט של ישות השכנה שהיא היעד המקשר.
החזרות
WEAVE_NO_ERROR בהצלחה. אחרת, מחזירה WEAVE_ERROR שמשקף את הכשל בפעולת הקישור.

BindRequest

WEAVE_ERROR BindRequest(
  nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

BindRequest

WEAVE_ERROR BindRequest(
  WeaveConnection *aConnection
)

אפשר לבקש קישור באמצעות חיבור פעיל של Weave.

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

פרטים
פרמטרים
[in] aConnection
מצביע לחיבור Weave שישמש לקישור.
החזרות
WEAVE_NO_ERROR כראוי או WEAVE_ERROR_NO_MEMORY אם טבלת הקישור מלאה. אחרת, מוחזרת שגיאה שמשקפת כשל בהתחלת הקישור.

IncompleteIndication

virtual void IncompleteIndication(
  Binding *aBinding,
  StatusReport & aReport
)

טיפול בסימון שקישור נכשל.

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

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

IncompleteIndication

virtual void IncompleteIndication(
  const uint64_t & aPeerNodeId,
  StatusReport & aReport
)=0

יש לטפל בסימון לכך שקישור כבר לא הושלם.

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

פרטים
פרמטרים
[in] aPeerNodeId
הפניה למזהה בן 64 ביט של הצומת של האפליקציה השכנה או נקודת הקצה של השירות שהיא היעד של הקישור שנכשל.
[in] aReport
הפניה לאובייקט StatusReport (דוח סטטוס), המפרט את הסיבה לכשל.

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
)

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

כשקישור עובר למצב 'לא קשור' יש להסיר גם את כל העסקאות שתלויות כרגע בנתונים האלה. השיטה הזו משלימה את כל העסקאות באמצעות הקישור הזה באופן אוטומטי.

פרטים
פרמטרים
[in] aPeerNodeId
הפניה למזהה הצומת או לנקודת הקצה של שירות בגרסת 64 ביט, שמזהים את הקישור.
ראו גם:
UnbindRequest(const uint64_t, WEAVE_ERROR)

UnbindRequest

void UnbindRequest(
  const uint64_t & aPeerNodeId,
  WEAVE_ERROR aErr
)

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

כשקישור עובר למצב 'לא קשור' יש להסיר גם את כל העסקאות שתלויות כרגע בנתונים האלה. השיטה הזו משלימה את כל העסקאות באמצעות הקישור הזה באופן אוטומטי.

פרטים
פרמטרים
[in] aPeerNodeId
הפניה למזהה הצומת או לנקודת הקצה של שירות בגרסת 64 ביט, שמזהים את הקישור.
[in] aErr
WEAVE_NO_ERROR אם אין סיבה ספציפית לבקשה הלא קשורה הזו, אחרת הסיבה לשגיאה תועבר הלאה.
למידע נוסף:
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
)

StartTransaction

WEAVE_ERROR StartTransaction(
  DMTransaction *aTransaction
)

StatusResponse

WEAVE_ERROR StatusResponse(
  ExchangeContext *aExchangeCtx,
  StatusReport & aStatus
)