nl :: Dệt :: Hồ sơ :: DataManagement_Legacy :: Ràng buộc
#include <src/lib/profiles/data-management/Legacy/Binding.h>
Lớp Binding quản lý trạng thái truyền thông thay mặt cho một thực thể ứng dụng bằ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 lựa chọn. Lớp Binding sắp xếp các tùy chọn này và sắp xếp chúng theo cách sao cho thứ dễ thì dễ và thứ khó hơn ít nhất là có thể xử lý được. Các tùy chọn được bảo hiểm bao gồm:
- giao tiếp UDP unicast 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) Hàm tạo mặc định cho các đối tượng Ràng buộc . | |
~Binding (void) Bộ hủy cho các đối tượng Ràng buộc . |
Các loại công khai | |
---|---|
@165 { | enum Tập hợp các trạng thái đối tượng Ràng buộc . |
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ỏ đến đối tượng ProtocolEngine liên quan đến Ràng buộc này. |
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 Trạng thái đối tượng Ràng buộc hiện tại. |
mTransport | uint8_t Phương tiện vận chuyển để sử dụng trong việc hoàn thành Ràng buộc này. |
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 một đối tượng ExchangeContext từ một Binding . |
IncompleteIndication ( StatusReport & aReport) | void Xử lý lỗi ràng buộc. |
Init (const uint64_t & aPeerNodeId) | Khởi tạo Ràng buộc chỉ với một ID nút. |
Init (const uint64_t & aPeerNodeId, uint8_t aTransport) | Khởi tạo một đối tượng Binding dựa trên ID ngang hàng và phương tiện truyền tải. |
Init (const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode) | Khởi tạo đối tượng Ràng buộc với điểm cuối dịch vụ. |
Init ( WeaveConnection *aConnection) | Khởi tạo một đối tượng Binding bằng 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
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ỏ đến đối tượng ProtocolEngine liên quan đến Ràng buộc này.
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ể, phần lớn đượ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 đều có một thực thể đích, đượ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 liên kết 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
Trạng thái đối tượng Ràng buộc hiện tại.
Chỉ một thao tác "hoàn thành" có thể chạy tại một thời điểm 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
Phương tiện vận chuyển để sử dụng trong việc hoàn thành ràng buộc này
(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 )
Hàm tạo mặc định cho các đối tượng Ràng buộc .
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ố |
|
CompleteConfirm
void CompleteConfirm( StatusReport & aReport )
Xử lý lỗi yêu cầu ràng buộc.
Chi tiết | |||
---|---|---|---|
Thông số |
|
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.
Việc hoàn thành một ràng buộc, ít nhất là đối với các ràng buộc 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 phiên bản ExchangeManager.
Chi tiết | |||||||
---|---|---|---|---|---|---|---|
Thông số |
| ||||||
Giá trị trả lại |
| ||||||
Lợi nhuận | Nếu không, bất kỳ WEAVE_ERROR nào cũng trả về 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 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ố |
| ||||||
Giá trị trả lại |
|
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ó.
Các ràng buộc 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ởi phương thức Uncomplete () ngoài trạng thái được xóa đơn giản về trạng thái ban đầu bằng phương thức Free () . 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ó.
Các ràng buộc có thể có trạng thái yêu cầu dọn dẹp, ví dụ như đóng kết nối, được xử lý bởi phương thức Uncomplete () ngoài trạng thái chỉ được xóa về trạng thái ban đầu bằng phương thức Free () . 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ố |
|
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 tất cả trạng thái ràng buộc một cách vô điều kiện về trạng thái ban đầu.
GetExchangeCtx
ExchangeContext * GetExchangeCtx( WeaveExchangeManager *aExchangeMgr, void *aAppState )
Tạo một đối tượng ExchangeContext từ một Binding .
Chi tiết | |||||
---|---|---|---|---|---|
Thông số |
| ||||
Lợi nhuận | một con trỏ đến một đối tượng ExchangeContext hoặc NULL khi bị lỗi. |
IncompleteIndication
void IncompleteIndication( StatusReport & aReport )
Xử lý lỗi ràng buộc.
Phương thức này được gọi và đến lượt nó, gọi các trình xử lý lớp cao hơn khi liên kết không thành công SAU KHI hoàn thành, tức là sau khi CompleteConfirm () được gọi với trạng thái biểu thị thành công.
Chi tiết | |||
---|---|---|---|
Thông số |
|
CompleteConfirm (Báo cáo trạng thái & aReport) .
Trong đó
WEAVE_ERROR Init( const uint64_t & aPeerNodeId )
Khởi tạo Ràng buộc chỉ với một ID nút.
Đ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ố |
| ||||
Giá trị trả lại |
|
Trong đó
WEAVE_ERROR Init( const uint64_t & aPeerNodeId, uint8_t aTransport )
Khởi tạo một đối tượng Binding dựa trên ID ngang hàng và phương tiện truyền tải.
Chi tiết | |||||
---|---|---|---|---|---|
Thông số |
| ||||
Giá trị trả lại |
|
Trong đó
WEAVE_ERROR Init( const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode )
Khởi tạo một đối tượng Ràng buộc 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. Liên kết 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 này trong quy trình có thể được gửi đ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ố |
| ||||||
Giá trị trả lại |
|
Trong đó
WEAVE_ERROR Init( WeaveConnection *aConnection )
Khởi tạo một đối tượng Binding bằng WeaveConnection .
Chi tiết | |||||
---|---|---|---|---|---|
Thông số |
| ||||
Giá trị trả lại |
|
Hoàn tất
bool IsComplete( void )
Kiểm tra xem 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. |
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ó Free () được gọi trên nó và đã không được sử dụng kể 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. Các ứng dụng có thể coi việc gọi UncompleteRequest () như một phần của quá trình dọn dẹp do 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. Các ứng dụng có thể coi việc gọi UncompleteRequest () như một phần của quá trình dọn dẹp do lỗi.
Chi tiết | |||
---|---|---|---|
Thông số |
|
UncompleteRequest (vô hiệu)
~ Ràng buộc
virtual ~Binding( void )
Bộ hủy cho các đối tượng Ràng buộc .
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ở.