nl::Weave::Profiles::BDX_Development

מרחב השמות הזה כולל את כל הממשקים ב-Weave לפרופיל Bulk Data Transfer (BDX) שנמצאים באופן פעיל בפיתוח, ואין להשתמש בו לייצור.

סיכום

ספירות

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

ערכי דף

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

ערכי דף

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->mIsReceive=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
מצביע על דחיית הודעת StatusReport שאנחנו מעבדים

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->mIsReceive=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() נשארת אצל מתכנת האפליקציות ובקריאות החוזרות (callback) שהוא מגדיר. משימה לביצוע: לאמת זאת ולהתאים אותה לשפה במסמך ה-BDX, שבה כתוב: "[A TransferError] יכולה להישלח בכל עת על ידי כל אחד מהצדדים כדי לסיים מוקדם את העברת הנתונים בכמות גדולה".

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

פונקציות

GetBDXAckFlag

uint16_t GetBDXAckFlag(
  ExchangeContext *anEc
)

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

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