nl::Weave::Profiles::BDX_Development

מרחב השמות הזה כולל את כל הממשקים ב-Weave של הפרופיל להעברת נתונים בכמות גדולה (BDX) שנמצאים בפיתוח פעיל ואסור להשתמש בהם לצורכי ייצור.

סיכום

ערכים של ספירה

@80 טיפוסים בני מנייה (enum)
@81 טיפוסים בני מנייה (enum)
@82 טיפוסים בני מנייה (enum)
@83 טיפוסים בני מנייה (enum)

Typedefs

BdxClient typedef
BdxServer typedef
ErrorHandler)(BDXTransfer *aXfer, WEAVE_ERROR anErrorCode) typedef
void(*
ה-handler הזה נקרא בכל פעם שאנחנו נתקלים בשגיאת Weave שלא ניתן להחזיר אותה ישירות באמצעות קודי שגיאה לתהליך הבקרה שהוגדר על ידי המשתמש.
GetBlockHandler)(BDXTransfer *aXfer, uint64_t *aLength, uint8_t **aDataBlock, bool *aLastBlock) typedef
void(*
Get a block of data to be transmitted.
PutBlockHandler)(BDXTransfer *aXfer, uint64_t aLength, uint8_t *aDataBlock, bool aLastBlock) typedef
void(*
טיפול בבלוק הנתונים שאליו מפנה aDataBlock באורך aLength.
ReceiveAcceptHandler)(BDXTransfer *aXfer, ReceiveAccept *aReceiveAcceptMsg) typedef
בוצעה קריאה חוזרת כשהיעד ReceiveInit התקבל בעבר ביעד.
ReceiveInitHandler)(BDXTransfer *aXfer, ReceiveInit *aReceiveInitMsg) typedef
uint16_t(*
בוצעה קריאה חוזרת כשמקבלים הודעת ReceiveInit.
RejectHandler)(BDXTransfer *aXfer, StatusReport *aReport) typedef
void(*
הקובץ הופעל אם אחת מההודעות הקודמות ב-Init נדחתה על ידי היעד.
SendAcceptHandler)(BDXTransfer *aXfer, SendAccept *aSendAcceptMsg) typedef
בוצעה קריאה חזרה כש-SendInit שנשלח בעבר מתקבל ביעד.
SendInitHandler)(BDXTransfer *aXfer, SendInit *aSendInitMsg) typedef
uint16_t(*
בוצעה קריאה חוזרת כשמקבלים הודעת SendInit.
XferDoneHandler)(BDXTransfer *aXfer) typedef
void(*
צריך לטפל במקרים שבהם ההעברה הסתיימה.
XferErrorHandler)(BDXTransfer *aXfer, StatusReport *aXferError) typedef
void(*
טיפול בהודעות TransferError שהתקבלו או נשלחו על ידי BDX.

פונקציות

GetBDXAckFlag(ExchangeContext *anEc)
uint16_t
GetBDXAckflag מחזיר את הדגל המתאים לשדה RequestAck בהתאם לחיבור של ההקשר של ה-Exchange (אין בקשה ל-ack עבור TCP), ומבוסס על התמיכה בזמן ההידור ב-WRMP.

שיעורים

nl::Weave::Profiles::BDX_Development::BdxNode
nl::Weave::Profiles::BDX_Development::BlockAck

הודעת BlockAck משמשת לאישור חסימה של נתונים.

nl::Weave::Profiles::BDX_Development::BlockAckV1

הודעת BlockAckV1 משמשת לאישור החסימה של נתונים.

nl::Weave::Profiles::BDX_Development::BlockEOF

הודעת BlockEOF משמשת להעברת קטע הנתונים האחרון מהשולח אל המקבל.

nl::Weave::Profiles::BDX_Development::BlockEOFAck

הודעת BlockEOFAck משמשת לאישור קטע הנתונים האחרון.

nl::Weave::Profiles::BDX_Development::BlockEOFAckV1

ההודעה BlockEOFAckV1 משמשת לאישור של חסימת הנתונים האחרונה.

nl::Weave::Profiles::BDX_Development::BlockEOFV1

הודעת BlockEOFV1 משמשת להעברת קטע הנתונים האחרון מהשולח אל המקבל.

nl::Weave::Profiles::BDX_Development::BlockQuery

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

nl::Weave::Profiles::BDX_Development::BlockQueryV1

הודעת BlockQueryV1 משמשת לבקשה להעברת בלוק נתונים מהשולח למקבל.

nl::Weave::Profiles::BDX_Development::BlockSend

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

nl::Weave::Profiles::BDX_Development::BlockSendV1

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

nl::Weave::Profiles::BDX_Development::ReceiveAccept

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

nl::Weave::Profiles::BDX_Development::ReceiveInit

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

nl::Weave::Profiles::BDX_Development::ReceiveReject

ההודעה ReceiveReject משמשת לדחיית הצעה להחלפה כשהשולח הוא שיוזם ההזמנה.

nl::Weave::Profiles::BDX_Development::SendAccept

ההודעה SendAccept משמשת לאישור הצעה להחלפה כאשר השולח הוא יוזם ההודעה.

nl::Weave::Profiles::BDX_Development::SendInit

הודעת SendInit משמשת להתחלת החלפה כשהשולח הוא שיוזם ההזמנה.

nl::Weave::Profiles::BDX_Development::SendReject

ההודעה SendReject משמשת לדחיית ההצעה להחלפה כשהשולח הוא היוזם.

nl::Weave::Profiles::BDX_Development::TransferError

הודעת השגיאה משמשת לדיווח על שגיאה ולביטול החלפה.

מבנים

nl::Weave::Profiles::BDX_Development::BDXHandlers
nl::Weave::Profiles::BDX_Development::BDXTransfer

המבנה הזה מכיל חברי נתונים שמייצגים העברה פעילה של BDX.

מרחבי שמות

nl::Weave::Profiles::BDX_Development::BdxProtocol

ערכים של ספירה

80@

 @80

81@

 @81

82@

 @82

83@

 @83

Typedefs

BdxClient

BdxNode BdxClient

BdxServer

BdxNode BdxServer

ErrorHandler

void(* ErrorHandler)(BDXTransfer *aXfer, WEAVE_ERROR anErrorCode)

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

כלומר, אם מתרחשת שגיאה בתוך handler אחר שבחתימה שלו סוג ההחזרה מבוטל (למשל בתגובה להודעת Weave נכנסת או אפילו שנשלחה באמצעות הפרוטוקול), ה-handler הזה ייקרא כדי שהמשתמש יוכל לקבוע אם ניתן לשחזר את ההעברה ולהמשיך או אם עליו לקרוא ל-Shutdown() . חשוב לשים לב שייתכן שתתרחש שגיאה לפני אתחול BDXTransfer (למשל, כבר הוקצו יותר מדי אובייקטי העברה). במקרה כזה, השגיאה הזו תתועד על ידי Weave והפרוטוקול יטפל בניקוי כל המצב הדרוש שהוקצה.

פרטים
פרמטרים
[in] aXfer
מצביע אל BDXTransfer שמשויך להעברה הזו
[in] anErrorCode
קוד השגיאה שאנחנו צריכים לעבד

GetBlockHandler

void(* GetBlockHandler)(BDXTransfer *aXfer, uint64_t *aLength, uint8_t **aDataBlock, bool *aLastBlock)

Get a block of data to be transmitted.

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

פרטים
פרמטרים
[in] aXfer
BDXTransfer שמשויך להעברה המתמשכת הזו
[in,out] aLength
אורך הנתונים שנקראים ומאוחסנים בבלוק הזה. בקריאה לפונקציה מכילה את משך הזמן של מאגר הנתונים הזמני שמועבר ב-aDataBlock. בחזרה, המשתנה מכיל את אורך הנתונים שנקראו בפועל.
[in,out] aDataBlock
הסמן לקטע הנתונים. בקלט, הוא מכיל את מאגר הנתונים הזמני על ה-framework. מקבל הקריאה יכול להשתמש בשטח הזה כדי למלא את מאגר הנתונים הזמני או לספק מקום אגירת נתונים משלו (לאפליקציות של תאימות לאחור). אפליקציות שמשתמשות במאגר הנתונים הזמני לא צריכות להתבסס על התאמה כלשהי.
[out] aLastBlock
הערך הוא True אם צריך לשלוח את החסימה בתור BlockEOF וההעברה הושלמה. אחרת, צריך להזין False

PutBlockHandler

void(* PutBlockHandler)(BDXTransfer *aXfer, uint64_t aLength, uint8_t *aDataBlock, bool aLastBlock)

טיפול בבלוק הנתונים שאליו מפנה aDataBlock באורך aLength.

אם הפרמטר isLastBlock נכון, סביר להניח שזה יהיה כרוך בכתיבת הקובץ בקובץ ובסגירת הקובץ הזה.

פרטים
פרמטרים
[in] aXfer
BDXTransfer שמשויך להעברה המתמשכת הזו
[in] aLength
אורך הנתונים שנקראים ומאוחסנים בבלוק שצוין
[in] aDataBlock
גוש הנתונים בפועל
[in] aLastBlock
הערך הוא True אם החסימה התקבלה כ-BlockEOF וההעברה הושלמה. אחרת, הערך יהיה False. אם הערך הוא True, המתכנת אמור ככל הנראה לסיים את כל הכינויים של הקבצים, ויש לזכור שלאחר מכן תתבצע קריאה ל-XferDoneHandler

ReceiveAcceptHandler

WEAVE_ERROR(* ReceiveAcceptHandler)(BDXTransfer *aXfer, ReceiveAccept *aReceiveAcceptMsg)

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

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

פרטים
פרמטרים
[in] aXfer
מצביע אל BDXTransfer שמשויך להעברה הזו
[in] aReceiveAcceptMsg
להצביע על הודעת ReceiveAccept שאנחנו מעבדים

ReceiveInitHandler

uint16_t(* ReceiveInitHandler)(BDXTransfer *aXfer, ReceiveInit *aReceiveInitMsg)

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

התפקיד שלה הוא לקבוע אם אתם רוצים לקבל את הקבלה, ואם כן, להגדיר aXfer->mIsAccepted=true כדי שהפרוטוקול ישלח הודעת קבלה. האובייקט BDXTransfer מופעל להגדרות ברירת המחדל. זהו מקום טוב לצרף כל מצב ספציפי לאפליקציה (נקודות אחיזה של קבצים פתוחים וכו') אל aXfer->mAppState. בנוסף, צריך לצרף את רכיבי ה-handler הנדרשים, לדוגמה: בשלב הזה של הטיפול בבלוקים לאובייקט BDXTransfer. אם מוחזר קוד שגיאה שאינו kStatus_Success, ההנחה היא שההעברה נדחית והפרוטוקול יטפל בשליחת הודעת דחייה עם הקוד.

פרטים
פרמטרים
[in] aXfer
מצביע אל BDXTransfer שמשויך להעברה הזו
[in] aReceiveInitMsg
מצביעים על הודעת ReceiveInit שאנחנו מעבדים

RejectHandler

void(* RejectHandler)(BDXTransfer *aXfer, StatusReport *aReport)

הקובץ הופעל אם אחת מההודעות הקודמות ב-Init נדחתה על ידי היעד.

פרטים
פרמטרים
[in] aXfer
מצביע אל BDXTransfer שמשויך להעברה הזו
[in] aReport
מצביע על דחיית ההודעה של דוח הסטטוס שאנחנו מעבדים

SendAcceptHandler

WEAVE_ERROR(* SendAcceptHandler)(BDXTransfer *aXfer, SendAccept *aSendAcceptMsg)

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

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

פרטים
פרמטרים
[in] aXfer
מצביע אל BDXTransfer שמשויך להעברה הזו
[in] aSendAcceptMsg
מצביע על הודעת SendAccept שאנחנו מעבדים

SendInitHandler

uint16_t(* SendInitHandler)(BDXTransfer *aXfer, SendInit *aSendInitMsg)

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

התפקיד שלה הוא לקבוע אם אתם רוצים לאשר את ה-SendInit, ואם כן, להגדיר aXfer->mIsaccept=true כדי שהפרוטוקול ישלח הודעת אישור ליוזם. האובייקט BDXTransfer מופעל להגדרות ברירת המחדל. זהו מקום טוב לצרף כל מצב ספציפי לאפליקציה (נקודות אחיזה של קבצים פתוחים וכו') אל aXfer->mAppState. בנוסף, צריך לצרף את רכיבי ה-handler הנדרשים, לדוגמה: בשלב הזה של הטיפול בבלוקים לאובייקט BDXTransfer. אם מוחזר קוד שגיאה שאינו WEAVE_NO_ERROR, ההנחה היא שההעברה נדחית והפרוטוקול יטפל בשליחת הודעת דחייה עם הקוד.

פרטים
פרמטרים
[in] aXfer
מצביע אל BDXTransfer שמשויך להעברה הזו
[in] aSendInitMsg
מצביע על הודעת SendInit שאנחנו מעבדים

XferDoneHandler

void(* XferDoneHandler)(BDXTransfer *aXfer)

צריך לטפל במקרים שבהם ההעברה הסתיימה.

פרטים
פרמטרים
[in] aXfer
מצביע אל BDXTransfer שמשויך להעברה הזו

XferErrorHandler

void(* XferErrorHandler)(BDXTransfer *aXfer, StatusReport *aXferError)

טיפול בהודעות TransferError שהתקבלו או נשלחו על ידי BDX.

הערה: העברת BDX נחשבת כניתנת לשחזור (כנראה שהיא זמנית, למשל מחוץ ל-PacketBuffers כרגע), ולכן האפשרות לקרוא ל-Shutdown() נשארת למתכנת האפליקציות ולקריאות החוזרות (callbacks) שהן מגדירות. משימה לביצוע: יש לאמת את הפרטים האלה ולהתאים אותם לשפה במסמך BDX, שכתוב בה: "[A TransferError] יכול להיות בכל זמן על ידי כל אחד מהצדדים לסיים את העברת הנתונים בכמות גדולה".

פרטים
פרמטרים
[in] aXfer
מצביע אל BDXTransfer שמשויך להעברה הזו
[in] aXferError
מצביע על השגיאה של הודעת דוח הסטטוס שאנחנו מעבדים

פונקציות

GetBDXAckFlag

uint16_t GetBDXAckFlag(
  ExchangeContext *anEc
)

GetBDXAckflag מחזיר את הדגל המתאים לשדה RequestAck בהתאם לחיבור של ההקשר של ה-Exchange (אין בקשה ל-ack עבור TCP), ומבוסס על התמיכה בזמן ההידור ב-WRMP.

פרטים
פרמטרים
[in] anEc
ההקשר של ההחלפה שעליו אנחנו צריכים לקבל את הדגל
החזרות
0 או kSendflag_RequestAck