nl::Weave::Profiles::BDX_Development

Không gian tên này bao gồm tất cả các giao diện trong cấu hình Weave dành cho cấu hình Chuyển dữ liệu hàng loạt (BDX) đang trong quá trình phát triển và không được dùng để dùng cho việc phát hành chính thức.

Tóm tắt

Bảng liệt kê

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

Typedef

BdxClient typedef
BdxServer typedef
ErrorHandler)(BDXTransfer *aXfer, WEAVE_ERROR anErrorCode) typedef
void(*
Trình xử lý này được gọi mỗi khi gặp lỗi Weave mà không thể trả về trực tiếp thông qua mã lỗi cho luồng điều khiển do ứng dụng do người dùng xác định.
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(*
Xử lý khối dữ liệu được trỏ đến bởi aDataBlock có độ dài aLength.
ReceiveAcceptHandler)(BDXTransfer *aXfer, ReceiveAccept *aReceiveAcceptMsg) typedef
Lệnh gọi lại được gọi khi đích đến chấp nhận ReceiveInit đã gửi trước đó.
ReceiveInitHandler)(BDXTransfer *aXfer, ReceiveInit *aReceiveInitMsg) typedef
uint16_t(*
Lệnh gọi lại được gọi khi nhận được thông báo ReceiveInit.
RejectHandler)(BDXTransfer *aXfer, StatusReport *aReport) typedef
void(*
Được gọi nếu một trong các thông báo Init trước đó bị đích đến từ chối.
SendAcceptHandler)(BDXTransfer *aXfer, SendAccept *aSendAcceptMsg) typedef
Lệnh gọi lại được gọi khi đích đến chấp nhận SendInit đã gửi trước đó.
SendInitHandler)(BDXTransfer *aXfer, SendInit *aSendInitMsg) typedef
uint16_t(*
Lệnh gọi lại được gọi khi nhận được thông báo SendInit.
XferDoneHandler)(BDXTransfer *aXfer) typedef
void(*
Xử lý các trường hợp đã chuyển xong.
XferErrorHandler)(BDXTransfer *aXfer, StatusReport *aXferError) typedef
void(*
Xử lý thông báo TransferError do BDX nhận hoặc gửi.

Hàm

GetBDXAckFlag(ExchangeContext *anEc)
uint16_t
GetBDXAckFlag trả về cờ thích hợp cho trường RequestAck tuỳ thuộc vào kết nối của ngữ cảnh trao đổi (không xác định yêu cầu đối với TCP) và dựa trên khả năng hỗ trợ thời gian biên dịch của WRMP.

Lớp

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

Thông báo BlockAck được dùng để xác nhận một khối dữ liệu.

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

Thông báo BlockAckV1 được dùng để xác nhận một khối dữ liệu.

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

Thông báo BlockEOF được dùng để chuyển khối dữ liệu cuối cùng từ người gửi sang người nhận.

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

Thông báo BlockEOFAck được dùng để xác nhận khối dữ liệu cuối cùng.

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

Thông báo BlockEOFAckV1 được dùng để xác nhận khối dữ liệu cuối cùng.

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

Thông báo BlockEOFV1 được dùng để chuyển khối dữ liệu cuối cùng từ người gửi sang người nhận.

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

Thông báo BlockQuery được dùng để yêu cầu chuyển một khối dữ liệu từ người gửi sang người nhận.

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

Thông báo BlockQueryV1 dùng để yêu cầu chuyển một khối dữ liệu từ người gửi sang người nhận.

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

Thông báo BlockSend được dùng để chuyển một khối dữ liệu từ người gửi sang người nhận.

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

Thông báo BlockSendV1 được dùng để chuyển một khối dữ liệu từ người gửi sang người nhận.

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

Thông báo ReceiveAccept để chấp nhận trao đổi được đề xuất khi người nhận là người tạo.

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

Thông báo ReceiveInit được dùng để bắt đầu trao đổi khi trình nhận là người tạo.

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

Thông báo ReceiveReject được dùng để từ chối một cuộc trao đổi được đề xuất khi người gửi là người tạo.

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

Thông báo SendAccept dùng để chấp nhận giao dịch trao đổi được đề xuất khi người gửi là người tạo.

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

Tin nhắn SendInit được dùng để bắt đầu quá trình trao đổi khi người gửi là người tạo.

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

Thông báo SendReject dùng để từ chối một giao dịch trao đổi được đề xuất khi người gửi là người tạo.

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

Thông báo Lỗi được dùng để báo cáo lỗi và huỷ quá trình trao đổi.

Cấu trúc

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

Cấu trúc này chứa các thành phần dữ liệu đại diện cho một quá trình chuyển BDX đang hoạt động.

Không gian tên

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

Bảng liệt kê

@80

 @80

@81

 @81

@82

 @82

@83

 @83

Typedef

BdxClient

BdxNode BdxClient

BdxServer

BdxNode BdxServer

ErrorHandler

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

Trình xử lý này được gọi mỗi khi gặp lỗi Weave mà không thể trả về trực tiếp thông qua mã lỗi cho luồng điều khiển do ứng dụng do người dùng xác định.

Nghĩa là, nếu xảy ra lỗi trong một trình xử lý khác có chữ ký không có loại trả về (ví dụ: để phản hồi một thông báo Weave đến hoặc thậm chí được gửi đi bởi giao thức), trình xử lý này sẽ được gọi để người dùng có thể xác định xem liệu quá trình truyền có thể được khôi phục và tiếp tục hay không hoặc nếu họ nên gọi Shutdown(). Lưu ý rằng có thể xảy ra lỗi trước khi khởi tạo BDXTransfer (ví dụ: đã có quá nhiều đối tượng truyền được phân bổ). Trong trường hợp như vậy, lỗi đã nêu sẽ được Weave ghi lại và giao thức sẽ xử lý việc xoá mọi trạng thái cần thiết mà giao thức đã phân bổ.

Thông tin chi tiết
Các tham số
[in] aXfer
Con trỏ đến BDXTransfer được liên kết với quá trình chuyển này
[in] anErrorCode
Mã lỗi mà chúng ta cần xử lý

GetBlockHandler

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

Get a block of data to be transmitted.

Phương thức gọi cung cấp không gian lưu vào bộ đệm (vùng đệm và độ dài của vùng đệm, được truyền vào bằng tham chiếu). Hàm được gọi (ứng dụng người dùng) PHẢI dùng vùng đệm được cung cấp. Tuy nhiên, vì lý do tương thích ngược, có thể trả về vùng đệm của riêng nó. Hàm được gọi không được cung cấp nhiều hơn aLength byte. Khi trả về, aLength chứa số byte thực tế được đọc vào vùng đệm.

Thông tin chi tiết
Các tham số
[in] aXfer
BDXTransfer được liên kết với quá trình chuyển đang diễn ra này
[in,out] aLength
Độ dài của dữ liệu được đọc và lưu trữ trong khối này. Khi gọi hàm chứa độ dài của vùng đệm được truyền vào aDataBlock. Khi trả về, biến chứa lượng dữ liệu thực tế đã đọc.
[in,out] aDataBlock
Con trỏ đến khối dữ liệu. Trên dữ liệu đầu vào, vùng này chứa vùng đệm do khung cung cấp; hàm được gọi có thể sử dụng không gian đó để lấp đầy vùng đệm hoặc cung cấp không gian lưu vào bộ đệm riêng (cho các ứng dụng có khả năng tương thích ngược). Các ứng dụng dùng vùng đệm được cung cấp không được giả định bất kỳ căn chỉnh nào.
[out] aLastBlock
"True" nếu khối phải được gửi dưới dạng BlockEOF và quá trình chuyển đã hoàn tất, "false" nếu không

PutBlockHandler

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

Xử lý khối dữ liệu được trỏ đến bởi aDataBlock có độ dài aLength.

Có thể điều này sẽ liên quan đến việc ghi nó vào một tệp và đóng tệp đã nêu nếu isLastBlock là true.

Thông tin chi tiết
Các tham số
[in] aXfer
BDXTransfer được liên kết với quá trình chuyển đang diễn ra này
[in] aLength
Độ dài của dữ liệu được đọc và lưu trữ trong khối được chỉ định
[in] aDataBlock
Khối dữ liệu thực tế
[in] aLastBlock
"True" nếu quy tắc chặn được nhận là BlockEOF và quá trình chuyển đã hoàn tất, nếu không thì là "false". Nếu đúng, lập trình viên có thể nên hoàn thiện mọi xử lý tệp, lưu ý rằng XferDoneHandler sẽ được gọi sau

ReceiveAcceptHandler

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

Lệnh gọi lại được gọi khi đích đến chấp nhận ReceiveInit đã gửi trước đó.

Bạn nên tận dụng cơ hội này để mở tệp hoặc phân bổ tài nguyên cho quá trình chuyển nếu chưa thực hiện việc này khi bắt đầu.

Thông tin chi tiết
Các tham số
[in] aXfer
Con trỏ đến BDXTransfer được liên kết với quá trình chuyển này
[in] aReceiveAcceptMsg
Con trỏ đến thông báo ReceiveAccept mà chúng ta đang xử lý

ReceiveInitHandler

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

Lệnh gọi lại được gọi khi nhận được thông báo ReceiveInit.

Nhiệm vụ của chương trình là xác định xem bạn có muốn chấp nhận receiver hay không. Nếu có, hãy thiết lập aXfer->mIs accepted=true để giao thức gửi thông báo chấp nhận đến trình khởi tạo. Đối tượng BDXTransfer được khởi tạo theo chế độ cài đặt mặc định. Đây là nơi phù hợp để đính kèm mọi trạng thái dành riêng cho ứng dụng (mở tệp điều khiển, v.v.) vào aXfer->mAppState. Tại thời điểm này, bạn cũng nên đính kèm các trình xử lý cần thiết, ví dụ: xử lý khối vào đối tượng BDXTransfer. Nếu mã lỗi không phải là kStatus_Success được trả về, quá trình chuyển được coi là bị từ chối và giao thức sẽ xử lý việc gửi thông báo từ chối kèm theo mã.

Thông tin chi tiết
Các tham số
[in] aXfer
Con trỏ đến BDXTransfer được liên kết với quá trình chuyển này
[in] aReceiveInitMsg
Con trỏ đến thông báo ReceiveInit mà chúng ta đang xử lý

RejectHandler

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

Được gọi nếu một trong các thông báo Init trước đó bị đích đến từ chối.

Thông tin chi tiết
Các tham số
[in] aXfer
Con trỏ đến BDXTransfer được liên kết với quá trình chuyển này
[in] aReport
Con trỏ đến trạng thái từ chối thông báo StatusReport mà chúng tôi đang xử lý

SendAcceptHandler

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

Lệnh gọi lại được gọi khi đích đến chấp nhận SendInit đã gửi trước đó.

Bạn nên tận dụng cơ hội này để mở tệp hoặc phân bổ tài nguyên cho quá trình chuyển nếu chưa thực hiện việc này khi bắt đầu.

Thông tin chi tiết
Các tham số
[in] aXfer
Con trỏ đến BDXTransfer được liên kết với quá trình chuyển này
[in] aSendAcceptMsg
Con trỏ đến thông báo SendAccept mà chúng ta đang xử lý

SendInitHandler

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

Lệnh gọi lại được gọi khi nhận được thông báo SendInit.

Nhiệm vụ của chương trình là xác định xem bạn có muốn chấp nhận SendInit hay không và nếu có, hãy thiết lập aXfer->mIsRequired=true để giao thức gửi thông báo chấp nhận đến trình khởi tạo. Đối tượng BDXTransfer được khởi tạo theo chế độ cài đặt mặc định. Đây là nơi phù hợp để đính kèm mọi trạng thái dành riêng cho ứng dụng (mở tệp điều khiển, v.v.) vào aXfer->mAppState. Tại thời điểm này, bạn cũng nên đính kèm các trình xử lý cần thiết, ví dụ: xử lý khối vào đối tượng BDXTransfer. Nếu một mã lỗi khác WEAVE_NO_ERROR được trả về, quá trình chuyển được coi là bị từ chối và giao thức sẽ xử lý việc gửi thông báo từ chối kèm theo mã này.

Thông tin chi tiết
Các tham số
[in] aXfer
Con trỏ đến BDXTransfer được liên kết với quá trình chuyển này
[in] aSendInitMsg
Con trỏ đến thông báo SendInit mà chúng ta đang xử lý

XferDoneHandler

void(* XferDoneHandler)(BDXTransfer *aXfer)

Xử lý các trường hợp đã chuyển xong.

Thông tin chi tiết
Các tham số
[in] aXfer
Con trỏ đến BDXTransfer được liên kết với quá trình chuyển này

XferErrorHandler

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

Xử lý thông báo TransferError do BDX nhận hoặc gửi.

Lưu ý: Quá trình chuyển BDX được cho là có khả năng khôi phục (có thể là tạm thời, chẳng hạn như hết Gói đệm vào lúc này), do đó tuỳ chọn gọi Shutdown() được để lại cho lập trình viên ứng dụng và các lệnh gọi lại mà họ xác định. VIỆC CẦN LÀM: xác minh thông tin này và điều chỉnh lại với ngôn ngữ trong tài liệu BDX, trong đó có nêu rõ: "[A TransferError] Có thể được một trong hai bên gửi bất cứ lúc nào để kết thúc sớm hoạt động chuyển dữ liệu hàng loạt".

Thông tin chi tiết
Các tham số
[in] aXfer
Con trỏ đến BDXTransfer được liên kết với quá trình chuyển này
[in] aXferError
Con trỏ đến lỗi thông báo StatusReport mà chúng tôi đang xử lý

Hàm

GetBDXAckFlag

uint16_t GetBDXAckFlag(
  ExchangeContext *anEc
)

GetBDXAckFlag trả về cờ thích hợp cho trường RequestAck tuỳ thuộc vào kết nối của ngữ cảnh trao đổi (không xác định yêu cầu đối với TCP) và dựa trên khả năng hỗ trợ thời gian biên dịch của WRMP.

Thông tin chi tiết
Các tham số
[in] anEc
Bối cảnh trao đổi mà chúng ta nên gắn cờ dựa trên
Trả về
0 hoặc kSendFlag_RequestAck