nl :: Dệt :: Hồ sơ :: DataManagement_Current :: SubscriptionClient
Tóm lược
Các loại công khai | |
---|---|
@130 | enum |
EventCallback )(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) | typedefvoid(* Gọi lại để chuyển các sự kiện đăng ký vào ứng dụng. |
EventID { | enum |
ResubscribePolicyCallback )(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec) | typedefvoid(* Gọi lại để tìm nạp khoảng thời gian chờ trước khi đăng ký lại tiếp theo. |
Chức năng tĩnh công khai | |
---|---|
DefaultEventHandler ( EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam) | void |
DefaultResubscribePolicyCallback (void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec) | void Việc triển khai chính sách mặc định sẽ chọn một khoảng thời gian ngẫu nhiên có độ phân giải mili giây trên một cửa sổ ngày càng tăng, tuân theo trình tự fibonacci tối đa WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX. |
Chức năng công cộng | |
---|---|
AbortSubscription (void) | void Hủy đăng ký. |
ClearUpdated ( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle) | |
DisableResubscribe (void) | void Tắt cơ chế đăng ký lại. |
DiscardUpdates () | void Thông báo cho SubscriptionClient làm trống tập hợp các TraitPath đang chờ cập nhật và hủy bỏ yêu cầu cập nhật đang diễn ra, nếu có. |
EnableResubscribe ( ResubscribePolicyCallback aCallback) | void Bật đăng ký lại tự động. |
EndSubscription (void) | Kết thúc đăng ký. |
FlushUpdate () | Báo hiệu rằng ứng dụng đã hoàn thành việc thay đổi tất cả các TraitUpdatableDataSinks. |
FlushUpdate (bool aForce) | |
Free (void) | void Giải phóng đối tượng SubscriptionClient này. |
GetBinding (void) const | Binding * |
GetLivenessTimeoutMsec (void) const | uint32_t |
GetPeerNodeId (void) const | uint64_t |
GetSubscriptionId (uint64_t *const apSubscriptionId) | |
IndicateActivity (void) | void |
InitiateCounterSubscription (const uint32_t aLivenessTimeoutSec) | void |
InitiateSubscription (void) | void Định cấu hình SubscriptionClient làm người khởi tạo (trái ngược với người đăng ký phản đối) và đưa đăng ký lên nếu không. |
IsCanceling () const | bool |
IsEstablished () | bool |
IsEstablishedIdle () | bool |
IsFree () | bool |
IsInProgressOrEstablished () | bool |
IsInResubscribeHoldoff () | bool |
IsRetryEnabled () | bool |
IsTerminated () | bool |
IsUpdatePendingOrInProgress () | bool |
LockUpdateMutex (void) | void |
OnCatalogChanged () | void Phương thức này sẽ được gọi khi danh mục TraitDataSink đã được sửa đổi. |
ResetResubscribe (void) | void Kích hoạt cơ chế đăng ký lại. |
SetLivenessTimeoutMsec (uint32_t val) | void |
SetUpdated ( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional) | |
SuspendUpdateRetries () | void Thông báo cho SubscriptionClient ngừng thử lại các yêu cầu cập nhật. |
UnlockUpdateMutex (void) | void |
Cấu trúc | |
---|---|
nl :: Weave :: Profiles :: DataManagement_Current :: SubscriptionClient :: LastObservedEvent | |
nl :: Weave :: Profiles :: DataManagement_Current :: SubscriptionClient :: ResubscribeParam |
Đoàn thể | |
---|---|
nl :: Weave :: Profiles :: DataManagement_Current :: SubscriptionClient :: InEventParam | |
nl :: Weave :: Profiles :: DataManagement_Current :: SubscriptionClient :: OutEventParam |
Các loại công khai
@ 130
@130
EventCallback
void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
Gọi lại để chuyển các sự kiện đăng ký vào ứng dụng.
Chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Thông số |
|
EventID
EventID
Tính chất | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kEvent_OnEventStreamReceived | Được tạo khi SubscriptionEngine gặp một dòng sự kiện trong thông báo NotificationRequest. Ứng dụng có thể gọi EndSubscription () , AbortSubscription () hoặc Free () tại thời điểm này. | ||||||||||||
kEvent_OnExchangeStart | Được tạo sau khi liên kết đã được chuẩn bị và ExchangeContext đã được thiết lập nhưng trước khi bất kỳ thông báo nào được gửi đi. Đây là cơ hội cuối cùng để ứng dụng điều chỉnh cài đặt ExchangeContext , | ||||||||||||
kEvent_OnNoMorePendingUpdates | Sự kiện biểu thị rằng tất cả các đường dẫn trong tập hợp cập nhật đã được xử lý bởi trình ngang hàng và không cần cập nhật thêm đường dẫn nào nữa. | ||||||||||||
kEvent_OnNotificationProcessed | Được tạo khi SubscriptionEngine hoàn thành việc tiếp tục thông báo NotificationRequest. Ứng dụng có thể gọi EndSubscription () , AbortSubscription () hoặc Free () tại thời điểm này. | ||||||||||||
kEvent_OnNotificationRequest | Được tạo trên một khoản thu của một NotificationRequest. Ứng dụng có thể gọi EndSubscription () , AbortSubscription () hoặc Free () tại thời điểm này. | ||||||||||||
kEvent_OnSubscribeRequestPrepareNeeded | Được gửi khi công cụ sẵn sàng gửi SubscribeRequest. Ứng dụng dự kiến sẽ điền vào các đường dẫn mà nó muốn đăng ký. | ||||||||||||
kEvent_OnSubscriptionActivity | Một sự kiện chỉ ra hoạt động đăng ký. Nó được tạo bất cứ khi nào khách hàng nhận được chỉ báo về hoạt động đăng ký; điều này bao gồm việc thiết lập đăng ký thành công, nhận NotificationRequest hoặc nhận báo cáo trạng thái phản hồi thông báo SubscribeConfirm. | ||||||||||||
kEvent_OnSubscriptionEstablished | Được tạo khi đăng ký thành công. Ứng dụng có thể gọi EndSubscription () , AbortSubscription () hoặc Free () tại thời điểm này. | ||||||||||||
kEvent_OnSubscriptionTerminated | Đánh dấu sự kết thúc của đăng ký này. Các tham số được gửi đến nl :: Weave :: Profiles :: DataManagement_Current :: SubscriptionClient :: EventCallback sẽ cho biết liệu việc đăng ký lại có được tự động thực hiện hay không. Trong cuộc gọi trình xử lý sự kiện, trạng thái của máy khách sẽ bị Ứng dụng có thể gọi AbortSubscription () hoặc Free () trong trạng thái này. Các thông số được gửi cũng sẽ bao gồm một mã lỗi cho biết lý do kết thúc đăng ký. Đăng ký có thể đã bị chấm dứt vì một số lý do (thiếu WRM ACK, cấp phát ExchangeContext không thành công, hết thời gian phản hồi, ...) Một số mã lỗi có thể do ứng dụng tạo ra:
| ||||||||||||
kEvent_OnUpdateComplete | Sự kiện biểu thị việc cập nhật hoàn thành. Các thông số sự kiện sẽ cho biết việc cập nhật một đường dẫn đặc điểm cụ thể đã thành công hay thất bại. |
ResubscribePolicyCallback
void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
Gọi lại để tìm nạp khoảng thời gian chờ trước khi đăng ký lại tiếp theo.
Ứng dụng được phép hủy bỏ / miễn phí trong chức năng này nếu họ đã quyết định từ bỏ việc đăng ký lại.
Chi tiết | |||||||
---|---|---|---|---|---|---|---|
Thông số |
|
Chức năng tĩnh công khai
DefaultEventHandler
void DefaultEventHandler( EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
DefaultResubscribePolicyCallback
void DefaultResubscribePolicyCallback( void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec )
Việc triển khai chính sách mặc định sẽ chọn một khoảng thời gian ngẫu nhiên có độ phân giải mili giây trên một cửa sổ ngày càng tăng, tuân theo trình tự fibonacci tối đa WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.
Trung bình của thời gian chờ ngẫu nhiên sau WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX sẽ là khoảng một giờ. Khi số lần thử lại đặt lại thành 0, trình tự bắt đầu lại từ đầu.
Chức năng công cộng
AbortSubscription
void AbortSubscription( void )
Hủy đăng ký.
Hủy đăng ký khách hàng.
Ngay lập tức ngừng chấp nhận tất cả lưu lượng liên quan đến đăng ký và giải phóng tất cả các tài nguyên liên lạc cơ bản. Bản thân đối tượng SubscriptionClient vẫn hợp lệ và có thể được sử dụng lại.
Chấm dứt ứng dụng khách khi kết thúc đăng ký mà không cần thông báo cho nhà xuất bản đăng ký và không gửi sự kiện OnSubscriptionTerminated
cho trình xử lý sự kiện của ứng dụng. Nếu có đăng ký chung, đăng ký tại quầy cũng bị chấm dứt.
Khi gọi AbortSubscription () , đối tượng SubscriptionClient
đi vào trạng thái Đã kết Terminated
. Khi quá trình kết thúc hoàn tất, đối tượng sẽ chuyển sang trạng thái Initialized
. Cả hai quá trình chuyển đổi diễn ra đồng bộ trong lệnh gọi AbortSubscription () .
Sau khi AbortSubscription () trả về, đối tượng SubscriptionClient
có thể được sử dụng để bắt đầu một đăng ký khác hoặc nó có thể được giải phóng bằng cách gọi phương thức Free () .
ClearUpdated
WEAVE_ERROR ClearUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle )
DisableResubscribe
void DisableResubscribe( void )
Tắt cơ chế đăng ký lại.
Điều này sẽ hủy bỏ nếu đăng ký lại đang chờ xử lý.
DiscardUpdates
void DiscardUpdates()
Thông báo cho SubscriptionClient làm trống tập hợp các TraitPath đang chờ cập nhật và hủy bỏ yêu cầu cập nhật đang diễn ra, nếu có.
Phương thức này có thể được gọi từ bất kỳ lệnh gọi lại nào.
EnableResubscribe
void EnableResubscribe( ResubscribePolicyCallback aCallback )
Bật đăng ký lại tự động.
Đính kèm một lệnh gọi lại để chỉ định thời gian thử lại tiếp theo nếu không thành công.
Chi tiết | |||
---|---|---|---|
Thông số |
|
EndSubscription
WEAVE_ERROR EndSubscription( void )
Kết thúc đăng ký.
Kết thúc một cách duyên dáng đăng ký của khách hàng.
Khi tùy chọn thời gian biên dịch WDM_ENABLE_SUBSCRIPTION_CANCEL được bật, hãy kết thúc đăng ký một cách duyên dáng bằng cách gửi CancelRequest đến đồng đẳng. Các tài nguyên liên quan đến đăng ký được giải phóng khi phản hồi từ đồng nghiệp hoặc thời gian chờ. Khi tùy chọn bị vô hiệu hóa, cuộc gọi tương đương với AbortSubscription () .
Kết thúc một cách duyên dáng khi khách hàng kết thúc đăng ký. Nếu hỗ trợ hủy đăng ký được bật, thông báo SubscribeCancelRequest sẽ được gửi đến nhà xuất bản đăng ký và hệ thống sẽ chờ phản hồi trước khi chấm dứt đăng ký; nếu không, đăng ký sẽ bị chấm dứt ngay lập tức theo cách tương tự như AbortSubscription () . Nếu có đăng ký chung, đăng ký tại quầy cũng bị chấm dứt.
Trong khi đang chờ phản hồi cho một SubscribeCancelRequest, SubscriptionClient
sẽ chuyển sang trạng thái Canceling
.
Khi quá trình kết thúc bắt đầu, đối tượng SubscriptionClient
sẽ đi vào trạng thái Đã kết Terminated
và sự kiện OnSubscriptionTerminated
được gửi đến trình xử lý sự kiện của ứng dụng. Lưu ý rằng, nếu hỗ trợ hủy không được bật, trình xử lý sự kiện có thể được gọi đồng bộ trong lệnh gọi tới EndSubscription () .
Sau khi trình xử lý sự kiện của ứng dụng trả về, đối tượng SubscriptionClient
sẽ chuyển sang trạng thái Initialized
. Tại thời điểm này, đối tượng SubscriptionClient
có thể được sử dụng để bắt đầu một gói đăng ký khác hoặc nó có thể được giải phóng bằng cách gọi phương thức Free () .
FlushUpdate
WEAVE_ERROR FlushUpdate()
Báo hiệu rằng ứng dụng đã hoàn thành việc thay đổi tất cả các TraitUpdatableDataSinks.
Trừ khi quá trình trao đổi cập nhật trước đó đang diễn ra, khách hàng sẽ lấy tất cả dữ liệu được đánh dấu là đã cập nhật và gửi cho người phản hồi trong một yêu cầu cập nhật. Phương thức này có thể được gọi từ bất kỳ luồng nào.
Chi tiết | |||
---|---|---|---|
Thông số |
| ||
Lợi nhuận | WEAVE_NO_ERROR trong trường hợp thành công; mã WEAVE_ERROR khác trong trường hợp không thành công. |
FlushUpdate
WEAVE_ERROR FlushUpdate( bool aForce )
Miễn phí
void Free( void )
Giải phóng đối tượng SubscriptionClient này.
Giải phóng một đối tượng SubscriptionClient
.
Gọi AbortSubscription () nếu cần và giải phóng số tiền trên đối tượng SubscriptionClient này. Trong cách sử dụng chính xác, điều này sẽ cho phép đối tượng được trả về nhóm đối tượng
Giải phóng đối tượng SubscriptionClient
. Nếu một đăng ký đang hoạt động hoặc đang trong quá trình xử lý, thì đăng ký đó sẽ bị chấm dứt ngay lập tức theo cách tương tự như cách gọi AbortSubscription () . Nếu có bất kỳ yêu cầu cập nhật nào đang diễn ra, chúng sẽ bị hủy tương tự.
Ứng dụng có trách nhiệm gọi Free () chính xác một lần trong suốt thời gian tồn tại của đối tượng SubscriptionClient
. Sau khi Free () được gọi, không có tham chiếu nào được thực hiện tới đối tượng.
GetBinding
Binding * GetBinding( void ) const
GetLivenessTimeoutMsec
uint32_t GetLivenessTimeoutMsec( void ) const
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
GetSubscriptionId
WEAVE_ERROR GetSubscriptionId( uint64_t *const apSubscriptionId )
IndicateActivity
void IndicateActivity( void )
InitiateCounterSubscription
void InitiateCounterSubscription( const uint32_t aLivenessTimeoutSec )
InitiateSubscription
void InitiateSubscription( void )
Định cấu hình SubscriptionClient làm người khởi tạo (trái ngược với người đăng ký phản đối) và đưa đăng ký lên nếu không.
IsCanceling
bool IsCanceling() const
Được thành lập
bool IsEstablished()
IsEstablishedIdle
bool IsEstablishedIdle()
Là miễn phí
bool IsFree()
IsInProgressOrEstablished
bool IsInProgressOrEstablished()
IsInResubscribeHoldoff
bool IsInResubscribeHoldoff()
IsRetryEnabled
bool IsRetryEnabled()
Bị chấm dứt
bool IsTerminated()
IsUpdatePendingOrInProgress
bool IsUpdatePendingOrInProgress()
LockUpdateMutex
void LockUpdateMutex( void )
OnCatalogChanged
void OnCatalogChanged()
Phương thức này sẽ được gọi khi danh mục TraitDataSink đã được sửa đổi.
ResetResubscribe
void ResetResubscribe( void )
Kích hoạt cơ chế đăng ký lại.
Điều này sẽ bắt đầu thử lại ngay lập tức
SetLivenessTimeoutMsec
void SetLivenessTimeoutMsec( uint32_t val )
SetUpdated
WEAVE_ERROR SetUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional )
SuspendUpdateRetries
void SuspendUpdateRetries()
Thông báo cho SubscriptionClient ngừng thử lại các yêu cầu cập nhật.
Cho phép ứng dụng tạm ngừng cập nhật trong một khoảng thời gian mà không loại bỏ tất cả siêu dữ liệu. Cập nhật và thử lại sẽ được tiếp tục khi FlushUpdate được gọi. Khi được gọi để tạm ngừng cập nhật trong khi cập nhật đang được thực hiện, bản cập nhật sẽ không bị hủy nhưng trong trường hợp không thành công, nó sẽ không được thử lại cho đến khi FlushUpdate được gọi lại.
UnlockUpdateMutex
void UnlockUpdateMutex( void )