nl::Weave::Profiles::DataManagement_Legacy::Binding

#include <src/lib/profiles/data-management/Legacy/Binding.h>

Lớp Binding quản lý trạng thái giao tiếp thay cho một thực thể ứng dụng bằng cách sử dụng Weave.

Tóm tắt

Khi một ứng dụng muốn sử dụng Weave để giao tiếp với một thực thể từ xa, có rất nhiều lựa chọn. Lớp Binding tập hợp các tuỳ chọn này và sắp xếp chúng theo cách sao cho nội dung dễ thực hiện, còn nội dung khó hơn thì ít nhất cũng có thể xem được. Các lựa chọn bao gồm:

  • giao tiếp UDP unicast với một nút ngang hàng đã biết.
  • Truyền phát UDP bằng nút "any".
  • giao tiếp WRMP đơn hướng với một nút ngang hàng đã biết.
  • TCP giao tiếp với một nút ngang hàng đã biết.
  • TCP giao tiếp với một điểm cuối dịch vụ đã biết bằng một thực thể trình quản lý dịch vụ để thiết lập.
  • giao tiếp TCP dựa trên kết nối được thiết lập sẵn.

Hàm khởi tạo và hàm phá

Binding(void)
Hàm khởi tạo mặc định cho các đối tượng Binding.
~Binding(void)
Hàm khởi tạo cho các đối tượng Binding.

Loại công khai

@165{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
enum
Tập hợp các trạng thái của đối tượng Liên kết.

Thuộc tính công khai

mAuthMode
WeaveAuthMode
Chế độ xác thực Weave sẽ được sử dụng.
mConnection
Con trỏ đến kết nối Weave hiện đang được sử dụng trong liên kết này.
mEngine
Con trỏ đến đối tượng ProtocolEngine liên quan đến Binding này.
mPeerNodeId
uint64_t
Mã nút 64 bit của đích liên kết.
mServiceMgr
Con trỏ đến đối tượng ServiceManager (không bắt buộc) dùng để hoàn tất liên kết này.
mState
uint8_t
Trạng thái hiện tại của đối tượng Binding.
mTransport
uint8_t
Phương thức truyền tải cần sử dụng để hoàn tất Binding này.

Hàm công khai

CompleteConfirm(WeaveConnection *aConnection)
void
Xử lý việc xác nhận yêu cầu liên kết.
CompleteConfirm(StatusReport & aReport)
void
Xử lý lỗi yêu cầu liên kết.
CompleteConfirm(void)
void
Xử lý việc xác nhận yêu cầu liên kết.
CompleteRequest(ProtocolEngine *aEngine)
Yêu cầu hoàn tất việc liên kết.
Connect(WeaveConnection *aConnection)
Hoàn tất quá trình liên kết TCP bằng cách cung cấp kết nối đã hoàn tất.
Finalize(void)
void
"Huỷ hoàn tất" một liên kết và giải phóng nó.
Finalize(WEAVE_ERROR aErr)
void
"Huỷ hoàn tất" một liên kết và giải phóng nó.
Free(void)
void
Xoá trạng thái liên kết.
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
Tạo đối tượng ExchangeContext từ một Binding.
IncompleteIndication(StatusReport & aReport)
void
Xử lý lỗi liên kết.
Init(const uint64_t & aPeerNodeId)
Khởi tạo một Binding (Liên kết) chỉ bằng mã nhận dạng nút.
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
Khởi động đối tượng Binding dựa trên mã ứng dụng ngang hàng và mạng truyền tải.
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Khởi tạo đối tượng Binding đến một điểm cuối dịch vụ.
Init(WeaveConnection *aConnection)
Khởi chạy đối tượng Binding bằng WeaveConnection.
IsComplete(void)
bool
Kiểm tra xem liên kết đã hoàn tất chưa.
IsFree(void)
bool
Dấu kiểm là một ràng buộc miễn phí.
UncompleteRequest(void)
void
Làm cho liên kết không hoàn chỉnh.
UncompleteRequest(WEAVE_ERROR aErr)
void
Làm cho liên kết không hoàn chỉnh.

Loại công khai

@165

 @165

Tập hợp các trạng thái của đối tượng Liên kết.

Thuộc tính
kState_Complete

Trạng thái của Binding (Liên kết) đã hoàn tất và sẵn sàng để sử dụng.

kState_Completing

Trạng thái của một Binding đang trong quá trình hoàn tất.

kState_Incomplete

Trạng thái ban đầu (và cuối cùng) của Binding.

Thuộc tính công khai

mAuthMode

WeaveAuthMode mAuthMode

Chế độ xác thực Weave sẽ được sử dụng.

(ĐỌC_CHỈ)

Đây là chế độ xác thực được sử dụng trong mọi hoạt động giao tiếp chịu sự điều chỉnh của mối liên kết này.

mConnection

WeaveConnection * mConnection

Con trỏ đến kết nối Weave hiện đang được sử dụng trong liên kết này.

(CHỈ ĐỌC)

Bạn có thể khởi tạo các mối liên kết TCP bằng một kết nối ngay lập tức hoặc phân bổ một liên kết tại thời điểm hoàn tất.

mEngine

ProtocolEngine * mEngine

Con trỏ đến đối tượng ProtocolEngine liên quan đến Binding này.

Liên kết thường được hoàn tất đối với một công cụ giao thức cụ thể, chủ yếu được dùng làm cách truy cập vào MessageLayer. Đây là nơi chúng tôi theo dõi nó.

mPeerNodeId

uint64_t mPeerNodeId

Mã nút 64 bit của đích liên kết.

(CHỈ ĐỌC)

Mỗi Binding (Liên kết) đều có một thực thể mục tiêu được đặt tên ở đây. Ngoài mã nút Weave, mã này có thể đặt tên cho điểm cuối của dịch vụ.

mServiceMgr

nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr

Con trỏ đến đối tượng ServiceManager (không bắt buộc) dùng để hoàn tất liên kết này.

(CHỈ ĐỌC)

Khi liên kết với dịch vụ Weave, mã điểm cuối của dịch vụ 64 bit có thể được cung cấp tại thời điểm khởi chạy thay cho mã nhận dạng nút Weave. Trong trường hợp này, bạn cũng cần có đối tượng ServiceManager để hoàn tất liên kết. Các liên kết TCP hoặc WRMP thông thường không yêu cầu đối tượng ServiceManager.

mState

uint8_t mState

Trạng thái hiện tại của đối tượng Binding.

Mỗi lần, bạn chỉ có thể chạy một thao tác "hoàn tất" và trong mọi trường hợp, nếu bạn yêu cầu hoàn thành một mối liên kết đã hoàn tất, thao tác này chỉ cần gọi hàm xác nhận ngay lập tức. Biến trạng thái dưới đây theo dõi trạng thái hiện tại và hoạt động như một khoá.

mTransport

uint8_t mTransport

Phương thức truyền tải cần sử dụng để hoàn tất Binding này.

(CHỈ ĐỌC)

Các giá trị mTransport có thể được xác định trong DMConstants.h.

Hàm công khai

Ép giấy tờ

 Binding(
  void
)

Hàm khởi tạo mặc định cho các đối tượng Binding.

Xoá tất cả trạng thái nội bộ.

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

Xử lý việc xác nhận yêu cầu liên kết.

Thông tin chi tiết
Thông số
[in] aConnection
Con trỏ đến một WeaveConnection đang hoạt động đến mục tiêu liên kết.

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

Xử lý lỗi yêu cầu liên kết.

Thông tin chi tiết
Thông số
[in] aReport
Giá trị tham chiếu đến đối tượng StatusReport (Báo cáo trạng thái) mô tả lỗi.

CompleteConfirm

void CompleteConfirm(
  void
)

Xử lý việc xác nhận yêu cầu liên kết.

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Yêu cầu hoàn tất việc liên kết.

Việc hoàn tất liên kết, ít nhất là đối với các liên kết yêu cầu TCP, được thực hiện đối với một đối tượng ProtocolEngine cụ thể, cung cấp quyền truy cập vào một thực thể ExchangeManager.

Thông tin chi tiết
Thông số
[in] aEngine
Con trỏ đến một đối tượng ProtocolEngine thay mặt đang được thực hiện quá trình hoàn tất.
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
WEAVE_ERROR_INCORRECT_STATE
nếu liên kết đã được hoàn tất.
WEAVE_ERROR_NO_MEMORY
Nếu cần có kết nối nhưng không có kết nối
Trả về
Nếu không, mọi WEAVE_ERROR được trả về trong khi cố gắng kết nối.

Kết nối

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Hoàn tất quá trình liên kết TCP bằng cách cung cấp kết nối đã hoàn tất.

Bạn không thể sử dụng liên kết TCP mới khởi tạo cho đến khi hoàn tất. Thông thường, việc này được thực hiện theo yêu cầu khi ứng dụng cố gắng tận dụng liên kết để gửi thông báo, nhưng cũng có thể hoàn tất một cách rõ ràng bằng cách cung cấp kết nối Weave.

Thông tin chi tiết
Thông số
[in] aConnection
Con trỏ đến một WeaveConnection được dùng để hoàn tất liên kết.
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu liên kết đã có kết nối.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu kết nối là NULL.

Hoàn tất

void Finalize(
  void
)

"Huỷ hoàn tất" một liên kết và giải phóng nó.

Liên kết có thể có trạng thái yêu cầu dọn dẹp, ví dụ: đóng kết nối, được xử lý bằng phương thức Uncomplete() bên cạnh trạng thái chỉ được xoá về trạng thái ban đầu bằng phương thức Free(). Phương thức này, phần lớn vì sự thuận tiện, sẽ gọi cả hai.

Xem thêm:
Hoàn tất(WEAVE_ERROR)

Hoàn tất

void Finalize(
  WEAVE_ERROR aErr
)

"Huỷ hoàn tất" một liên kết và giải phóng nó.

Liên kết có thể có trạng thái yêu cầu dọn dẹp, ví dụ: đóng kết nối, được xử lý bằng phương thức Uncomplete() bên cạnh trạng thái chỉ được xoá về trạng thái ban đầu bằng phương thức Free(). Phương thức này, phần lớn vì sự thuận tiện, sẽ gọi cả hai.

Thông tin chi tiết
Thông số
[in] aErr
Mã lỗi này cho biết nguyên nhân của yêu cầu này. Nếu không phải WEAVE_NO_ERROR, kết nối TCP có thể bị hủy.
Xem thêm:
Hoàn tất(vô hiệu)

Miễn phí

void Free(
  void
)

Xoá trạng thái liên kết.

Trả lại vô điều kiện mọi trạng thái liên kết về trạng thái ban đầu.

GetExchangeCtx

ExchangeContext * GetExchangeCtx(
  WeaveExchangeManager *aExchangeMgr,
  void *aAppState
)

Tạo đối tượng ExchangeContext từ một Binding.

Thông tin chi tiết
Thông số
[in] aExchangeMgr
Con trỏ tới trình quản lý trao đổi để yêu cầu ngữ cảnh.
[in] aAppState
Con trỏ rỗng đến một đối tượng trạng thái ứng dụng sẽ được lưu trữ trong ngữ cảnh trao đổi để sử dụng sau này.
Trả về
con trỏ đến đối tượng ExchangeContext hoặc giá trị NULL khi gặp lỗi.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Xử lý lỗi liên kết.

Phương thức này được gọi và đến lượt sẽ gọi các trình xử lý lớp cao hơn khi liên kết bị lỗi SAU KHI hoàn tất, tức là sau khi CompleteConfirm() được gọi với một trạng thái biểu thị thành công.

Thông tin chi tiết
Thông số
[in] aReport
Trích dẫn đến một StatusReport (Báo cáo trạng thái) mô tả sự cố.
Xem thêm:
CompleteConfirm(StatusReport &aReport).

Bắt đầu

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Khởi tạo một Binding (Liên kết) chỉ bằng mã nhận dạng nút.

Điều này sẽ dẫn đến sự liên kết với mạng truyền tải mặc định đã định cấu hình.

Thông tin chi tiết
Thông số
[in] aPeerNodeId
Tham chiếu đến mã nhận dạng 64 bit của mục tiêu liên kết.
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu liên kết được chỉ định thiếu.

Bắt đầu

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Khởi động đối tượng Binding dựa trên mã ứng dụng ngang hàng và mạng truyền tải.

Thông tin chi tiết
Thông số
[in] aPeerNodeId
Tham chiếu đến giá trị nhận dạng nút 64 bit của đích liên kết.
[in] aTransport
Thông số kỹ thuật của WeaveTransportOption.
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu liên kết được chỉ định thiếu.

Bắt đầu

WEAVE_ERROR Init(
  const uint64_t & aServiceEpt,
  WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

Khởi tạo đối tượng Binding đến một điểm cuối dịch vụ.

Đây là cách bạn liên kết với một thiết bị đầu cuối cụ thể trên dịch vụ Nest. Việc liên kết kiểu này yêu cầu quy trình hoàn tất nhiều giai đoạn, có thể bao gồm việc điền hoặc cập nhật bộ nhớ đệm của thư mục dịch vụ cục bộ. Trong hầu hết trường hợp, quy trình này bị ẩn khỏi ứng dụng nhưng điều đó có nghĩa là các lỗi phát sinh sau đó trong quá trình có thể được phân phối, thường là qua lệnh gọi lại "xác nhận" có liên quan, sau (đôi khi rất lâu sau) yêu cầu ban đầu để sử dụng (và hoàn tất) liên kết.

Thông tin chi tiết
Thông số
[in] aServiceEpt
Tham chiếu đến giá trị nhận dạng 64 bit cho điểm cuối của Dịch vụ Weave mà bạn quan tâm.
[in] aServiceMgr
Con trỏ đến thực thể trình quản lý dịch vụ để dùng khi tra cứu một cấp dịch vụ và kết nối với thực thể đó.
[in] aAuthMode
Chế độ xác thực để sử dụng khi kết nối.
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu liên kết được chỉ định thiếu.

Bắt đầu

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Khởi chạy đối tượng Binding bằng WeaveConnection.

Thông tin chi tiết
Thông số
[in] aConnection
Con trỏ đến WeaveConnection để dùng làm cơ sở cho liên kết.
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu liên kết được chỉ định thiếu.

IsComplete

bool IsComplete(
  void
)

Kiểm tra xem liên kết đã hoàn tất chưa.

Thông tin chi tiết
Trả về
true nếu câu trả lời đầy đủ, nếu không thì là false.
Xem thêm:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

Dấu kiểm là một ràng buộc miễn phí.

Trong ngữ cảnh này, "Miễn phí" có nghĩa đơn giản là "có mã nhận dạng nút ngang hàng đã xác định". IsFree() nên được coi là có nghĩa "đã gọi Free() và không được sử dụng kể từ đó".

Thông tin chi tiết
Trả về
giá trị true (đúng) nếu liên kết là tự do, nếu không có thì giá trị false (sai).

UncompleteRequest

void UncompleteRequest(
  void
)

Làm cho liên kết không hoàn chỉnh.

Về cơ bản, liên kết sẽ ở trạng thái "chưa hoàn tất" sau khi phương thức này được gọi, nhưng tinh tế hơn, bất kỳ trạng thái liên quan nào không có trong chính liên kết đó, như kết nối TCP, cũng phải được xóa. Các ứng dụng có thể cân nhắc gọi UncompleteRequest() như một phần của hoạt động dọn dẹp lỗi.

Xem thêm:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Làm cho liên kết không hoàn chỉnh.

Về cơ bản, liên kết sẽ ở trạng thái "chưa hoàn tất" sau khi phương thức này được gọi, nhưng tinh tế hơn, bất kỳ trạng thái liên quan nào không có trong chính liên kết đó, như kết nối TCP, cũng phải được xóa. Các ứng dụng có thể cân nhắc gọi UncompleteRequest() như một phần của hoạt động dọn dẹp lỗi.

Thông tin chi tiết
Thông số
[in] aErr
Nếu không phải là WEAVE_NO_ERROR, thì kết nối hiện có (nếu có) sẽ bị huỷ thay vì được đóng linh hoạt.
Xem thêm:
UncompleteRequest(void)

~Liên kết

virtual  ~Binding(
  void
)

Hàm khởi tạo cho các đối tượng Binding.

Xoá tất cả trạng thái nội bộ VÀ đóng các kết nối đang mở nếu cần.