Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

nl :: Dệt :: Hồ sơ :: DataManagement_Legacy :: Ràng buộc

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

Các Binding lớp quản lý nhà nước thông tin liên lạc trên danh nghĩa của một thực thể ứng dụng sử dụng Weave.

Tóm lược

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 tùy chọn. Các Binding lớp corrals các tùy chọn và sắp xếp chúng theo cách như vậy mà những thứ dễ rất dễ dàng và những thứ khó khăn hơn là ít nhất dể làm. Các tùy chọn được bảo hiểm bao gồm:

  • giao tiếp unicast UDP với một nút ngang hàng đã biết.
  • UDP quảng bá với nút "bất kỳ".
  • giao tiếp unicast WRMP 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.
  • Giao tiếp TCP với một điểm cuối dịch vụ đã biết bằng cách sử dụng phiên bản trình quản lý dịch vụ để thiết lập mọi thứ.
  • Giao tiếp TCP dựa trên kết nối được thiết lập trước.

Người xây dựng và Người phá hủy

Binding (void)
Các constructor mặc định cho Binding đối tượng.
~Binding (void)
Destructor cho Ràng buộc đối tượng.

Các loại công khai

@165 {
kState_Incomplete = 0,
kState_Completing = 1,
kState_Complete = 2
}
enum
Tập hợp các ràng buộc quốc gia đối tượng.

Thuộc tính công cộng

mAuthMode
WeaveAuthMode
Chế độ xác thực Weave sẽ được sử dụng.
mConnection
Một con trỏ đến kết nối Weave hiện đang được sử dụng trong liên kết này.
mEngine
Một con trỏ tới các ProtocolEngine đối tượng liên quan đến này Binding .
mPeerNodeId
uint64_t
ID nút 64 bit của đích liên kết.
mServiceMgr
Một con trỏ đến đối tượng ServiceManager (tùy chọn) để sử dụng trong việc hoàn thành liên kết này.
mState
uint8_t
Dòng điện Binding trạng thái đối tượng.
mTransport
uint8_t
Các phương tiện giao thông sử dụng trong việc hoàn thành này Binding .

Chức năng công cộng

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

Các loại công khai

@ 165

 @165

Tập hợp các ràng buộc quốc gia đối tượng.

Tính chất
kState_Complete

Tình trạng của một ràng buộc đó là đầy đủ và sẵn sàng để sử dụng.

kState_Completing

Tình trạng của một ràng buộc đó là trong quá trình được hoàn thành.

kState_Incomplete

Ban đầu (và cuối cùng) trạng thái của một Binding .

Thuộc tính công cộng

mAuthMode

WeaveAuthMode mAuthMode

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

(CHỈ ĐỌC)

Đây là chế độ xác thực được sử dụng trong tất cả các giao tiếp được điều chỉnh bởi ràng buộc này.

mConnection

WeaveConnection * mConnection

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

(CHỈ ĐỌC)

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

mEngine

ProtocolEngine * mEngine

Một con trỏ tới các ProtocolEngine đối tượng liên quan đến này Binding .

Một ràng buộc thường được hoàn thành đối với một công cụ giao thức cụ thể, công cụ này chủ yếu được sử dụng như một cách để truy cập MessageLayer. Đây là nơi chúng tôi theo dõi nó.

mPeerNodeId

uint64_t mPeerNodeId

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

(CHỈ ĐỌC)

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

mServiceMgr

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

Một con trỏ đến đối tượng ServiceManager (tùy chọn) để sử dụng trong việc hoàn thành ràng buộc này.

(CHỈ ĐỌC)

Khi liên kết với dịch vụ Weave, ID điểm cuối dịch vụ 64 bit có thể được cung cấp tại thời điểm khởi tạo thay cho ID nút Weave. Trong trường hợp này, một đối tượng ServiceManager cũng được yêu cầu để hoàn thành ràng buộc. 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

Dòng điện Binding trạng thái đối tượng.

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

mTransport

uint8_t mTransport

Các phương tiện giao thông sử dụng trong việc hoàn thành này Binding .

(CHỈ ĐỌC)

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

Chức năng công cộng

Ràng buộc

 Binding(
  void
)

Các constructor mặc định cho Binding đối tượng.

Xóa tất cả trạng thái bên trong.

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

Xử lý xác nhận của một yêu cầu ràng buộc.

Chi tiết
Thông số
[in] aConnection
Một con trỏ đến một hoạt động WeaveConnection với mục tiêu ràng buộc.

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

Xử lý lỗi yêu cầu ràng buộc.

Chi tiết
Thông số
[in] aReport
Tham chiếu đến một đối tượng StatusReport mô tả lỗi.

CompleteConfirm

void CompleteConfirm(
  void
)

Xử lý xác nhận của một yêu cầu ràng buộc.

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Yêu cầu hoàn thành một ràng buộc.

Hoàn thành một ràng buộc là, ít nhất là cho các ràng buộc yêu cầu TCP, thực hiện đối với một đặc biệt ProtocolEngine đối tượng, trong đó cung cấp quyền truy cập vào một thể hiện ExchangeManager.

Chi tiết
Thông số
[in] aEngine
Một con trỏ tới một ProtocolEngine đối tượng trên danh nghĩa trong đó hoàn thành đang được thực hiện.
Giá trị trả lại
WEAVE_NO_ERROR
Về thành công.
WEAVE_ERROR_INCORRECT_STATE
nếu ràng buộc đã được hoàn thành.
WEAVE_ERROR_NO_MEMORY
Nếu kết nối được yêu cầu và không có kết nối nào khả dụng
Lợi nhuận
Nếu không, bất kỳ WEAVE_ERROR trở trong khi cố gắng kết nối.

Kết nối

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Hoàn thành ràng buộc TCP bằng cách cung cấp một kết nối đã hoàn thành.

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

Chi tiết
Thông số
[in] aConnection
Một con trỏ tới một WeaveConnection sử dụng để hoàn thành việc ràng buộc.
Giá trị trả lại
WEAVE_NO_ERROR
Về thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu ràng buộc đã có kết nối.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu kết nối là NULL.

Hoàn thiện

void Finalize(
  void
)

"Chưa hoàn thành" một ràng buộc và giải phóng nó.

Bindings có thể có trạng thái đó đòi hỏi dọn dẹp, ví dụ như đóng kết nối, mà được xử lý theo phương pháp Uncomplete (), thêm vào trạng thái đó chỉ đơn giản là xóa trạng thái ban đầu của nó bởi sự miễn phí () phương pháp. Phương pháp này, phần lớn là vì sự thuận tiện, sử dụng cả hai.

Xem thêm:
Kết thúc (WEAVE_ERROR)

Hoàn thiện

void Finalize(
  WEAVE_ERROR aErr
)

"Chưa hoàn thành" một ràng buộc và giải phóng nó.

Bindings có thể có trạng thái đó đòi hỏi dọn dẹp, ví dụ như đóng kết nối, mà được xử lý theo phương pháp Uncomplete (), thêm vào trạng thái đó chỉ đơn giản là xóa trạng thái ban đầu của nó bởi sự miễn phí () phương pháp. Phương pháp này, phần lớn là vì sự thuận tiện, sử dụng cả hai.

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 bỏ.
Xem thêm:
Kết thúc (vô hiệu)

Miễn phí

void Free(
  void
)

Xóa trạng thái ràng buộc.

Trả lại vô điều kiện tất cả các trạng thái ràng buộc về trạng thái ban đầu.

GetExchangeCtx

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

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

Chi tiết
Thông số
[in] aExchangeMgr
Một con trỏ đến người quản lý trao đổi để yêu cầu ngữ cảnh.
[in] aAppState
Một con trỏ void đế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.
Lợi nhuận
một con trỏ đến một ExchangeContext đối tượng, hoặc NULL trên thất bại.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Xử lý lỗi của một ràng buộc.

Phương pháp này được gọi và, đến lượt nó, gọi lớp cao hơn xử lý khi các ràng buộc không SAU hoàn thành, tức là sau khi CompleteConfirm () đã được gọi với một biểu thị thành công trạng thái.

Chi tiết
Thông số
[in] aReport
Tham chiếu đến một StatusReport mô tả những gì đã xảy ra.
Xem thêm:
CompleteConfirm (StatusReport & aReport) .

Trong đó

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Khởi tạo một ràng buộc chỉ với một ID node.

Điều này dẫn đến một ràng buộc với phương tiện truyền tải mặc định đã định cấu hình.

Chi tiết
Thông số
[in] aPeerNodeId
Tham chiếu đến ID 64-bit của đích ràng buộc.
Giá trị trả lại
WEAVE_NO_ERROR
Về thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu ràng buộc được chỉ định dưới mức.

Trong đó

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Khởi tạo một Binding đối tượng dựa trên ID ngang hàng và vận chuyển.

Chi tiết
Thông số
[in] aPeerNodeId
Tham chiếu đến định danh nút 64-bit của đích liên kết.
[in] aTransport
Đặc điểm kỹ thuật vận chuyển, từ WeaveTransportOption.
Giá trị trả lại
WEAVE_NO_ERROR
Về thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu ràng buộc được chỉ định dưới mức.

Trong đó

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

Khởi tạo một Ràng buộc đối tượng đến một thiết bị đầu 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. Một ràng buộc kiểu này yêu cầu một quá trình hoàn thành nhiều giai đoạn, có thể bao gồm việc điền hoặc cập nhật bộ đệm ẩn thư mục dịch vụ cục bộ. Đối với hầu hết các phần, 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 này có thể được phân phối, thông thường thông 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 sử dụng ban đầu (và hoàn tất) các ràng buộc.

Chi tiết
Thông số
[in] aServiceEpt
Tham chiếu đến mã nhận dạng 64 bit cho điểm cuối Dịch vụ Weave quan tâm.
[in] aServiceMgr
Một con trỏ đến phiên bản trình quản lý dịch vụ để sử dụng trong việc tìm kiếm một tầng dịch vụ và kết nối với nó.
[in] aAuthMode
Chế độ xác thực để sử dụng trong kết nối.
Giá trị trả lại
WEAVE_NO_ERROR
Về thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu ràng buộc được chỉ định dưới mức.

Trong đó

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Khởi tạo một Ràng buộc đối tượng với một WeaveConnection .

Chi tiết
Thông số
[in] aConnection
Một con trỏ tới một WeaveConnection để sử dụng như một cơ sở cho việc ràng buộc ..
Giá trị trả lại
WEAVE_NO_ERROR
Về thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu ràng buộc được chỉ định dưới mức.

Hoàn tất

bool IsComplete(
  void
)

Kiểm tra xem một ràng buộc đã hoàn tất chưa.

Chi tiết
Lợi nhuận
true nếu nó đầy đủ, false nếu không.
Xem thêm:
CompleteRequest (ProtocolEngine * aEngine)

Là miễn phí

bool IsFree(
  void
)

Kiểm tra là một ràng buộc là miễn phí.

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

Chi tiết
Lợi nhuận
true nếu ràng buộc miễn phí, false nếu ngược lại.

UncompleteRequest

void UncompleteRequest(
  void
)

Khiến một ràng buộc không hoàn chỉnh.

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

Xem thêm:
UncompleteRequest (WEAVE_ERROR)

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Khiến một ràng buộc không hoàn chỉnh.

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

Chi tiết
Thông số
[in] aErr
Nếu không phải WEAVE_NO_ERROR, kết nối hiện có, nếu có, sẽ bị hủy thay vì đóng một cách duyên dáng.
Xem thêm:
UncompleteRequest (vô hiệu)

~ Ràng buộc

virtual  ~Binding(
  void
)

Destructor cho Ràng buộc đối tượng.

Xóa tất cả trạng thái bên trong VÀ, nếu cần, đóng các kết nối đang mở.