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(*
มีการเรียกใช้ Callback เมื่อได้รับข้อความ ReceiveInit
RejectHandler)(BDXTransfer *aXfer, StatusReport *aReport) Typedef
void(*
เรียกใช้หากข้อความ Init ก่อนหน้านี้ถูกปฏิเสธโดยปลายทาง
SendAcceptHandler)(BDXTransfer *aXfer, SendAccept *aSendAcceptMsg) Typedef
ระบบจะเรียกใช้ Callback เมื่อปลายทางยอมรับ SendInit ที่ส่งไปก่อนหน้านี้
SendInitHandler)(BDXTransfer *aXfer, SendInit *aSendInitMsg) Typedef
uint16_t(*
มีการเรียกใช้ Callback เมื่อได้รับข้อความ SendInit
XferDoneHandler)(BDXTransfer *aXfer) Typedef
void(*
จัดการกรณีที่การโอนเสร็จสมบูรณ์แล้ว
XferErrorHandler)(BDXTransfer *aXfer, StatusReport *aXferError) Typedef
void(*
จัดการข้อความ TransferError ที่ได้รับหรือส่งโดย BDX

ฟังก์ชัน

GetBDXAckFlag(ExchangeContext *anEc)
uint16_t
GetBDXAckFlag ส่งคืน Flag ที่เหมาะสมสำหรับช่อง 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 จะใช้เพื่อปฏิเสธ Exchange ที่เสนอเมื่อผู้ส่งเป็นผู้เริ่ม

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

ข้อความ SendAccept จะใช้เพื่อยอมรับการแลกเปลี่ยนที่เสนอเมื่อผู้ส่งเป็นผู้เริ่มต้น

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

ข้อความ SendInit จะใช้ในการเริ่มต้นการแลกเปลี่ยนเมื่อผู้ส่งเป็นผู้เริ่ม

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

ข้อความ SendReject จะใช้เพื่อปฏิเสธ Exchange ที่เสนอเมื่อผู้ส่งเป็นผู้เริ่ม

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

ข้อความแสดงข้อผิดพลาดใช้เพื่อรายงานข้อผิดพลาดและล้มเลิก Exchange

โครงสร้าง

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

มีการเรียกใช้ Callback เมื่อได้รับข้อความ 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)

ระบบจะเรียกใช้ Callback เมื่อปลายทางยอมรับ SendInit ที่ส่งไปก่อนหน้านี้

คุณอาจต้องการใช้โอกาสนี้เพื่อเปิดไฟล์หรือจัดสรรทรัพยากรสำหรับการโอน หากคุณไม่ได้ดำเนินการในตอนเริ่มต้น

รายละเอียด
พารามิเตอร์
[in] aXfer
ตัวชี้ไปยัง BDXTransfer ที่เชื่อมโยงกับการโอนนี้
[in] aSendAcceptMsg
ชี้ไปที่ข้อความ SendAccept ที่เรากำลังประมวลผล

SendInitHandler

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

มีการเรียกใช้ Callback เมื่อได้รับข้อความ 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() เป็นโปรแกรมเมอร์ของแอปพลิเคชันและ Callback ที่กําหนดไว้ TODO: ตรวจสอบยืนยันและปรับยอดด้วยภาษาในเอกสาร BDX ซึ่งระบุว่า "[ TransferError] ทั้ง 2 ฝ่ายสามารถส่งล่วงหน้าเมื่อใดก็ได้ หยุดการโอนข้อมูลจำนวนมาก"

รายละเอียด
พารามิเตอร์
[in] aXfer
ตัวชี้ไปยัง BDXTransfer ที่เชื่อมโยงกับการโอนนี้
[in] aXferError
ชี้ไปที่ข้อผิดพลาดข้อความ StatusReport ที่เรากำลังประมวลผล

ฟังก์ชัน

GetBDXAckFlag

uint16_t GetBDXAckFlag(
  ExchangeContext *anEc
)

GetBDXAckFlag ส่งคืน Flag ที่เหมาะสมสำหรับช่อง RequestAck โดยขึ้นอยู่กับการเชื่อมต่อของบริบท Exchange (ไม่มีคำขอ Ack สำหรับ TCP) และอิงตามการรองรับเวลาคอมไพล์สำหรับ WRMP

รายละเอียด
พารามิเตอร์
[in] anEc
บริบทการแลกเปลี่ยนที่เราควรได้รับ การรายงาน
การคืนสินค้า
0 หรือ kSendFlag_RequestAck