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 mặt cho một thực thể ứng dụng bằng cách 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 sẽ kết hợp các tuỳ chọn này và sắp xếp chúng sao cho nội dung dễ thì dễ, nội dung khó hơn ít nhất cũng có thể ghi được. Các tùy chọn được đề cập bao gồm:

  • giao tiếp unicast UDP với một nút ngang hàng đã biết.
  • Truyền tin UDP bằng "any" nút.
  • giao tiếp WRMP unicast với một nút ngang hàng đã biết.
  • giao tiếp TCP với một nút ngang hàng đã biết.
  • TCP giao tiếp với đ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 thiết lập sẵn.

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

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

Loại công khai

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

Các thuộc tính công khai

mAuthMode
WeaveAuthMode
Chế độ xác thực Weave sẽ được sử dụng.
mConnection
Con trỏ trỏ đến kết nối Weave hiện đang được dùng trong liên kết này.
mEngine
Một con trỏ trỏ đến đối tượng ProtocolEngine liên quan đến Binding này.
mPeerNodeId
uint64_t
Mã nút 64 bit của mục tiêu liên kết.
mServiceMgr
Con trỏ trỏ đến đối tượng ServiceManager (không bắt buộc) để sử dụng khi 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 vận chuyển dùng để hoàn tất Liên kết 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 thành một liên kết.
Connect(WeaveConnection *aConnection)
Hoàn tất liên kết TCP bằng cách cung cấp một kết nối hoàn chỉnh.
Finalize(void)
void
"Chưa hoàn tất" một liên kết và giải phóng nó.
Finalize(WEAVE_ERROR aErr)
void
"Chưa 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 Liên kết.
IncompleteIndication(StatusReport & aReport)
void
Xử lý lỗi liên kết.
Init(const uint64_t & aPeerNodeId)
Khởi động một Binding chỉ bằng một mã nút.
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
Khởi động đối tượng Binding dựa trên mã nhận dạng ứng dụng ngang hàng và thông tin truyền tải.
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Khởi động đối tượng Binding với một điểm cuối dịch vụ.
Init(WeaveConnection *aConnection)
Khởi động đối tượng Binding bằng WeaveConnection.
IsComplete(void)
bool
Kiểm tra xem một liên kết đã hoàn tất hay chưa.
IsFree(void)
bool
Kiểm tra xem có liên kết miễn phí hay không.
UncompleteRequest(void)
void
Khiến liên kết không hoàn chỉnh.
UncompleteRequest(WEAVE_ERROR aErr)
void
Khiến liên kết không hoàn chỉnh.

Loại công khai

@165

 @165

Tập hợp trạng thái của đối tượng Binding.

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 Liên kết đ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.

Các thuộc tính công khai

mAuthMode

WeaveAuthMode mAuthMode

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

(READ_ONLY)

Đây là chế độ xác thực được sử dụng trong tất cả thông tin liên lạc chịu sự điều chỉnh của liên kết này.

mConnection

WeaveConnection * mConnection

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

(CHỈ ĐỌC)

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

mEngine

ProtocolEngine * mEngine

Một con trỏ 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ể, công cụ này 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.

mPeerNodeId

uint64_t mPeerNodeId

Mã nút 64 bit của mục tiêu liên kết.

(CHỈ ĐỌC)

Mỗi Binding đều có một thực thể mục tiêu và thực thể này được đặt tên ở đây. Ngoài mã nhận dạng nút Weave, mã này có thể đặt tên cho điểm cuối dịch vụ.

mServiceMgr

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

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

(CHỈ ĐỌC)

Khi liên kết với dịch vụ Weave, mã nhận dạng đ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.

Chỉ một lần "hoàn tất" có thể chạy cùng một lúc. Trong mọi trường hợp, nếu bạn yêu cầu hoàn thành một liên kết hoàn chỉnh, thì hàm xác nhận sẽ ngay lập tức được gọi. Biến trạng thái bên dưới theo dõi trạng thái hiện tại và đóng vai trò là khoá.

mTransport

uint8_t mTransport

Phương thức vận chuyển dùng để hoàn tất Liên kết này.

(CHỈ ĐỌC)

Các giá trị có thể có cho mTransport đượ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
Tham số
[in] aConnection
Con trỏ 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
Tham số
[in] aReport
Tham chiếu đến đối tượng StatusReport 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 một liên kết.

Việc hoàn thành mộ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ể, giúp cung cấp quyền truy cập vào một thực thể ExchangeManager.

Thông tin chi tiết
Tham số
[in] aEngine
Con trỏ trỏ đến đối tượng ProtocolEngine thay mặt cho quá trình hoàn tất đang được thực hiện.
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 lỗi WEAVE_ERROR được trả về khi cố gắng kết nối.

Kết nối

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Hoàn tất liên kết TCP bằng cách cung cấp một kết nối hoàn chỉnh.

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 sử dụng liên kết này để gửi thông báo. Tuy nhiên, bạn cũng có thể hoàn tất việc này 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
Tham số
[in] aConnection
Con trỏ trỏ đến WeaveConnection 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
)

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

Các liên kết có thể có trạng thái cần dọn dẹp, ví dụ: trạng thái đóng kết nối được xử lý bằng phương thức Uncomplete() ngoài trạng thái đơn giản đượ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 để thuận tiện, gọi cả hai.

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

Hoàn tất

void Finalize(
  WEAVE_ERROR aErr
)

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

Các liên kết có thể có trạng thái cần dọn dẹp, ví dụ: trạng thái đóng kết nối được xử lý bằng phương thức Uncomplete() ngoài trạng thái đơn giản đượ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 để thuận tiện, gọi cả hai.

Thông tin chi tiết
Tham 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 là 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ả về vô điều kiện tất cả 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ừ Liên kết.

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

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

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

Phương thức này được gọi và đổi lại, gọi trình xử lý lớp cao hơn khi liên kết không thành công SAU KHI hoàn tất, tức là sau khi CompleteConfirm() được gọi với trạng thái cho biết thành công.

Thông tin chi tiết
Tham số
[in] aReport
Tham chiếu đến StatusReport mô tả sự cố.
Xem thêm:
CompleteConfirm(StatusReport &amp;aReport).

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Khởi động một Binding chỉ bằng một mã nút.

Việc này sẽ tạo ra sự liên kết với phương thức truyền tải mặc định đã định cấu hình.

Thông tin chi tiết
Tham 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.

Init

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à thông tin truyền tải.

Thông tin chi tiết
Tham số
[in] aPeerNodeId
Thông tin tham chiếu đến giá trị nhận dạng nút 64 bit của mục tiêu liên kết.
[in] aTransport
Thông số kỹ thuật về phương tiện giao thông, do WeaveTransportOption cung cấp.
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.

Init

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

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

Đây là cách bạn liên kết với một điểm cuối cụ thể trên dịch vụ Nest. Việc liên kết loại này đòi hỏi một quá trình hoàn tất gồm nhiều giai đoạn, có thể bao gồm cả 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 này trong quy trình có thể được gửi, thường thông qua lệnh "xác nhận" có liên quan lệnh gọi lại, 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
Tham số
[in] aServiceEpt
Thông tin tham chiếu đến giá trị nhận dạng 64 bit của điểm cuối quan tâm của Weave Service.
[in] aServiceMgr
Con trỏ trỏ đến thực thể trình quản lý dịch vụ để sử dụng khi tra cứu cấp dịch vụ và kết nối với cấp dịch vụ đó.
[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.

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Khởi động đối tượng Binding bằng WeaveConnection.

Thông tin chi tiết
Tham số
[in] aConnection
Con trỏ trỏ đến WeaveConnection để sử dụng làm cơ sở cho việc 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 một liên kết đã hoàn tất hay chưa.

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

IsFree

bool IsFree(
  void
)

Kiểm tra xem có liên kết miễn phí hay không.

"Miễn phí" trong ngữ cảnh này chỉ có nghĩa là "có một nút ngang hàng xác định ID". IsFree() should be thought of as meaning &quot;has had Free() gọi đến và chưa được sử dụng kể từ đó".

Thông tin chi tiết
Trả về
true nếu liên kết tự do, false nếu không liên kết.

UncompleteRequest

void UncompleteRequest(
  void
)

Khiến liên kết không hoàn chỉnh.

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

Xem thêm:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Khiến liên kết không hoàn chỉnh.

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

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

~Liên kết

virtual  ~Binding(
  void
)

Hàm huỷ cho đối tượng Binding.

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