จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

nl:: Weave::โปรไฟล์::BDX_ Developmentment

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

สรุป

การแจกแจง

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

ประเภทคําจํากัดความ

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

ชั้นเรียน

nl::Weave::Profiles::BDX_ Developmentment::BdxNode
nl::Weave::Profiles::BDX_ Developmentment::BlockAck

ข้อความ BlockAck ใช้ในการรับทราบบล็อกข้อมูล

nl::Weave::Profiles::BDX_ Developmentment::BlockAckV1

ข้อความ BlockAckV1 ใช้ในการรับทราบบล็อกข้อมูล

nl::Weave::Profiles::BDX_ Developmentment::BlockEOF

ข้อความ BlockEOF จะใช้เพื่อบล็อกการบล็อกข้อมูลล่าสุดจากผู้ส่งไปยังผู้รับ

nl::Weave::Profiles::BDX_ Developmentment::BlockEOFAck

ข้อความ BlockEOFAck จะใช้เพื่อรับทราบการบล็อกข้อมูลครั้งล่าสุด

nl::Weave::Profiles::BDX_ Developmentment::BlockEOFAckV1

ข้อความ BlockEOFAckV1 จะใช้เพื่อรับทราบการบล็อกข้อมูลล่าสุด

nl::Weave::Profiles::BDX_ Developmentment::BlockEOFV1

ข้อความ BlockEOFV1 จะใช้เพื่อบล็อกการบล็อกข้อมูลล่าสุดจากผู้ส่งไปยังผู้รับ

nl::Weave::Profiles::BDX_ Developmentment::BlockQuery

ข้อความ BlockQuery จะใช้เพื่อขอให้มีการโอนบล็อกข้อมูลจากผู้ส่งไปยังผู้รับ

nl::Weave::Profiles::BDX_ Developmentment::BlockQueryV1

ข้อความ BlockQueryV1 จะใช้เพื่อขอให้โอนบล็อกข้อมูลจากผู้ส่งไปยังผู้รับ

nl::Weave::Profiles::BDX_ Developmentment::BlockSend

ข้อความ BlockSend ใช้เพื่อโอนบล็อกข้อมูลจากผู้ส่งไปยังผู้รับ

nl::Weave::Profiles::BDX_ Developmentment::BlockSendV1

ข้อความ BlockSendV1 จะใช้เพื่อโอนบล็อกข้อมูลจากผู้ส่งไปยังผู้รับ

nl::Weave::Profiles::BDX_ Developmentment::ReceiveReceive

ข้อความ Receiveaccept ใช้ในการยอมรับ Exchange ที่เสนอเมื่อผู้รับเริ่มต้น

nl::Weave::Profiles::BDX_ Developmentment::ReceiveInit

ข้อความ ReceiveInit จะใช้เพื่อเริ่มการแลกเปลี่ยนเมื่อตัวรับเริ่มต้น

nl::Weave::โปรไฟล์::BDX_ Developmentment::รับการปฏิเสธ

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

nl::Weave::Profiles::BDX_ Developmentment::Sendaccept

ข้อความ Sendaccept จะใช้เพื่อยอมรับ Exchange ที่เสนอเมื่อผู้ส่งเริ่มต้น

nl::Weave::Profiles::BDX_ Developmentment::SendInit

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

nl::Weave::โปรไฟล์::BDX_ Developmentment::ส่งการปฏิเสธ

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

nl::Weave::Profiles::BDX_ Developmentment::TransferError

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

โครงสร้าง

nl::Weave::โปรไฟล์::BDX_ Developmentment::BDXHandlers
nl::Weave::Profiles::BDX_ Developmentment::BDXTransfer

โครงสร้างนี้มีสมาชิกข้อมูลที่แสดงถึงการโอน BDX ที่ใช้งานอยู่

เนมสเปซ

nl::Weave::Profiles::BDX_ Developmentment::BdxProtocol

การแจกแจง

@80

 @80

@81

 @81

@82

 @82

@83

 @83

ประเภทคําจํากัดความ

ไคลเอ็นต์ Bdx

BdxNode BdxClient

เซิร์ฟเวอร์ Bdx

BdxNode BdxServer

เครื่องจัดการข้อผิดพลาด

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

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

กล่าวคือ หากข้อผิดพลาดเกิดขึ้นในเครื่องจัดการอื่นซึ่งลายเซ็นมีประเภทการยกเว้นเป็นโมฆะ (เช่น ตอบสนองต่อข้อความ Weave ที่เข้ามาใหม่ หรือแม้กระทั่งส่งโดยโปรโตคอล) ระบบจะเรียกเครื่องจัดการนี้เพื่อให้ผู้ใช้ทราบว่าสามารถกู้คืนการโอนและดําเนินการต่อ หรือควรจะเรียกใช้ Shutdown() โปรดทราบว่าอาจเกิดข้อผิดพลาดขึ้นก่อนที่ออบเจ็กต์ BDXtransfer จะเริ่มต้นไปแล้ว (เช่น จัดสรรแล้ว) ในกรณีดังกล่าว บันทึกจะได้รับการบันทึกโดย Weave และโปรโตคอลจะจัดการล้างสถานะที่จําเป็นใดๆ ที่จัดสรรไว้

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

เครื่องจัดการ GetBlock

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

รับเครื่องจัดการ

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

ระบบจะเรียกใช้โค้ดเรียกกลับเมื่อปลายทางยอมรับ ReceiveInit ที่ส่งมาก่อนหน้านี้

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

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

แฮนเดิลเริ่มต้น

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

ระบบจะเรียกใช้โค้ดเรียกกลับเมื่อได้รับข้อความ ReceiveInit

งานคือต้องตัดสินใจว่าจะยอมรับหรือไม่ ถ้ามี ให้ตั้ง aXfer->mIsaccept=true เพื่อให้โปรโตคอลส่งข้อความยอมรับไปยังผู้เริ่ม ออบเจ็กต์ BDXTransfer จะเริ่มต้นโดยการตั้งค่าเริ่มต้น ซึ่งจะช่วยให้คุณแนบสถานะเฉพาะแอปพลิเคชัน (เปิดไฟล์ที่เปิดอยู่ เป็นต้น) กับ aXfer->mAppState ได้ นอกจากนี้ คุณควรแนบเครื่องจัดการที่จําเป็น เช่น การจัดการการบล็อกไปยังออบเจ็กต์ BDXTransfer ในขั้นตอนนี้ หากมีการส่งคืนรหัสข้อผิดพลาดอื่นที่ไม่ใช่ kStatus_Success ระบบจะปฏิเสธการโอนและโปรโตคอลจะจัดการส่งข้อความปฏิเสธที่มีรหัสนั้น

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

เครื่องจัดการเครื่องจัดการ

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

มีการเรียกใช้หากข้อความ Init ข้อความก่อนหน้าถูกปฏิเสธโดยปลายทาง

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

ส่งเครื่องจัดการ

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

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