nl::Weave::Profiles::BDX_Development

เนมสเปซนี้มีอินเทอร์เฟซทั้งหมดภายใน Weave สำหรับโปรไฟล์การโอนข้อมูลจำนวนมาก (BDX) ที่กำลังอยู่ระหว่างการพัฒนา และไม่ควรใช้สำหรับการใช้งานจริง

สรุป

การแจกแจง

@80 enum
@81 enum
@82 enum
@83 enum

Typedef

BdxClient typedef
BdxServer typedef
ErrorHandler)(BDXTransfer *aXfer, WEAVE_ERROR anErrorCode) typedef
void(*
ระบบจะเรียกเครื่องจัดการนี้ทุกครั้งที่พบข้อผิดพลาดของ 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

Typedef

BdxClient

BdxNode BdxClient

BdxServer

BdxNode BdxServer

ErrorHandler

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

ระบบจะเรียกเครื่องจัดการนี้ทุกครั้งที่พบข้อผิดพลาดของ Weave ซึ่งไม่สามารถแสดงผลโดยตรงผ่านรหัสข้อผิดพลาดไปยังขั้นตอนการควบคุมที่กำหนดโดยแอปพลิเคชันของผู้ใช้

กล่าวคือ หากข้อผิดพลาดเกิดขึ้นภายในเครื่องจัดการอื่นที่ลายเซ็นมีรูปแบบผลลัพธ์เป็นโมฆะ (เช่น เพื่อตอบสนองข้อความ Weave ที่เข้ามาหรือแม้แต่ส่งโดยโปรโตคอล) ระบบจะเรียกเครื่องจัดการนี้เพื่อให้ผู้ใช้สามารถพิจารณาว่าการถ่ายโอนสามารถกู้คืนและดำเนินการต่อได้หรือไม่ หรือควรเรียก Shutdown() โปรดทราบว่าอาจเกิดข้อผิดพลาดขึ้นก่อนที่จะมีการโอนออบเจ็กต์ BDXTransfer มากเกินไป (เช่น การโอน 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.

ตัวเรียกใช้มีพื้นที่บัฟเฟอร์ (บัฟเฟอร์และความยาวของบัฟเฟอร์ซึ่งส่งผ่านโดยการอ้างอิง) Callee (แอปพลิเคชันผู้ใช้) ควรใช้บัฟเฟอร์ที่ให้ไว้ แต่ด้วยเหตุผลความเข้ากันได้แบบย้อนหลัง อาจแสดงบัฟเฟอร์ของตัวเอง Callee ต้องป้อนไม่เกิน aLength ของไบต์ ในทางกลับกัน aLength จะแสดงจำนวนไบต์จริงที่อ่านลงในบัฟเฟอร์

รายละเอียด
พารามิเตอร์
[in] aXfer
BDXTransfer ที่เชื่อมโยงกับการโอนที่ดำเนินอยู่นี้
[in,out] aLength
ความยาวของข้อมูลที่อ่านและจัดเก็บไว้ในบล็อกนี้ เมื่อเรียกใช้ฟังก์ชันจะมีความยาวของบัฟเฟอร์ที่ส่งผ่านใน aDataBlock ในทางกลับกัน ตัวแปรจะมีความยาวของข้อมูลที่อ่านจริง
[in,out] aDataBlock
ตัวชี้ไปยังบล็อกข้อมูล ในอินพุต จะมีบัฟเฟอร์ที่ได้จากเฟรมเวิร์ก ตัวเรียกอาจใช้พื้นที่ดังกล่าวเพื่อเติมบัฟเฟอร์ หรือให้พื้นที่ของตนเอง (สำหรับแอปพลิเคชันความเข้ากันได้แบบย้อนหลัง) แอปพลิเคชันที่ใช้บัฟเฟอร์ที่ให้ไว้จะต้องไม่มีการวางแนวใดๆ
[out] aLastBlock
"จริง" หากควรส่งการบล็อกเป็น BlockEOF และการโอนเสร็จสมบูรณ์แล้ว หากไม่เป็นเช่นนั้นจะเป็นเท็จ

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
"จริง" หากได้รับการบล็อกเป็น BlockEOF และการโอนเสร็จสมบูรณ์แล้ว หากไม่เป็นเช่นนั้น ให้เป็นเท็จ หากค่าเป็นจริง โปรแกรมเมอร์ควรสรุปแฮนเดิลไฟล์ใดๆ ให้เสร็จเรียบร้อย โปรดทราบว่าจะมีการเรียก 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->mIsaccept=true เพื่อให้โปรโตคอลส่งข้อความยอมรับไปยังผู้เริ่มต้น ออบเจ็กต์ BDXTransfer จะเริ่มต้นขึ้นตามการตั้งค่าเริ่มต้น บริเวณนี้เป็นที่ที่เหมาะสมในการแนบสถานะเฉพาะแอปพลิเคชัน (เช่น เปิดไฟล์แบบเปิด เป็นต้น) กับ aXfer->mAppState นอกจากนี้ คุณควรแนบตัวแฮนเดิลที่จำเป็น เช่น การจัดการบล็อกเข้ากับออบเจ็กต์ 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->mIsaccept=true เพื่อให้โปรโตคอลส่งข้อความยอมรับไปยังผู้เริ่มต้น ออบเจ็กต์ BDXTransfer จะเริ่มต้นขึ้นตามการตั้งค่าเริ่มต้น บริเวณนี้เป็นที่ที่เหมาะสมในการแนบสถานะเฉพาะแอปพลิเคชัน (เช่น เปิดไฟล์แบบเปิด เป็นต้น) กับ aXfer->mAppState นอกจากนี้ คุณควรแนบตัวแฮนเดิลที่จำเป็น เช่น การจัดการบล็อกเข้ากับออบเจ็กต์ 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() จึงเป็นไปให้กับโปรแกรมเมอร์แอปพลิเคชันและโค้ดเรียกกลับที่ระบุไว้ สิ่งที่ต้องทำ: ยืนยันข้อมูลนี้และตรวจเทียบโดยใช้ภาษาในเอกสาร 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