nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
Tóm tắt
Loại công khai |
|
---|---|
@130
|
enum |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
Lệnh gọi lại để chuyển các sự kiện đăng ký đến ứng dụng. |
EventID{
|
enum |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedefvoid(*
Lệnh gọi lại để tìm nạp khoảng thời gian chờ trước lần đăng ký lại tiếp theo. |
Hàm 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 trong khoảng thời gian tăng dần, theo trình tự fibonacci tối đa WDM_RESUBSCRIPTION_MAX_FIBONACCI_STEP_INDEX.
|
Hàm công khai |
|
---|---|
AbortSubscription(void)
|
void
Huỷ gói thuê bao.
|
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
|
|
DisableResubscribe(void)
|
void
Tắt cơ chế đăng ký lại.
|
DiscardUpdates()
|
void
Yêu cầu SubscriptionClient xoá tập hợp TraitPath đang chờ cập nhật và huỷ yêu cầu cập nhật đang diễn ra, nếu có.
|
EnableResubscribe(ResubscribePolicyCallback aCallback)
|
void
Bật tính năng tự động đăng ký lại.
|
EndSubscription(void)
|
Kết thúc gói thuê bao.
|
FlushUpdate()
|
Tín hiệu cho thấy ứng dụng đã thay đổi xong tất cả TraitUpdatableDataSinks.
|
FlushUpdate(bool aForce)
|
|
Free(void)
|
void
Giải phóng đối tượng SubscriptionClient.
|
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 trình khởi tạo (trái ngược với trình đếm) và hiển thị gói thuê bao nếu không phải.
|
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
Xoá cơ chế đăng ký lại.
|
SetLivenessTimeoutMsec(uint32_t val)
|
void
|
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
|
|
SuspendUpdateRetries()
|
void
Yêu cầu SubscriptionClient dừng thử lại các yêu cầu cập nhật.
|
UnlockUpdateMutex(void)
|
void
|
Cấu trúc |
|
---|---|
nl:: |
|
nl:: |
Liên đoàn |
|
---|---|
nl:: |
|
nl:: |
Loại công khai
@130 giây
@130
EventCallback
void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
Lệnh gọi lại để chuyển các sự kiện đăng ký đến ứng dụng.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Tham số |
|
EventID
EventID
Thuộc tính | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kEvent_OnEventStreamReceived
|
Được tạo khi SubscriptionEngine tính một luồ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 chuẩn bị liên kết và thiết lập ExchangeContext nhưng trước khi gửi bất kỳ thông báo nào. Đây là cơ hội cuối cùng để ứng dụng điều chỉnh chế độ cài đặt ExchangeContext. |
||||||||||||
kEvent_OnNoMorePendingUpdates
|
Một sự kiện cho biết rằng tất cả các đường dẫn trong nhóm cập nhật đã được ứng dụng ngang hàng xử lý và không cần cập nhật thêm đường dẫn nào khác. |
||||||||||||
kEvent_OnNotificationProcessed
|
Được tạo khi SubscriptionEngine xử lý xong một 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 dựa trên nhận được 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 yêu cầu Đăng ký. Ứng dụng sẽ điền vào các đường dẫn mà ứng dụng muốn đăng ký. |
||||||||||||
kEvent_OnSubscriptionActivity
|
Một sự kiện cho biết hoạt động của gói thuê bao. Hồ sơ này được tạo bất cứ khi nào ứng dụng nhận được chỉ báo về hoạt động của gói thuê bao; bao gồm cả việc thiết lập gói thuê bao thành công, nhận được NotificationRequest hoặc nhận báo cáo trạng thái phản hồi thông báo Đăng ký Xác nhận. |
||||||||||||
kEvent_OnSubscriptionEstablished
|
Được tạo khi thiết lập gói thuê bao 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 là kết thúc gói thuê bao này. Các thông số được gửi đến nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback sẽ cho biết hệ thống có tự động thử đăng ký lại hay không. Trong lệnh gọi trình xử lý sự kiện, trạng thái của ứng dụng sẽ là Ứng dụng có thể gọi AbortSubscription() hoặc Free() ở trạng thái này. Các thông số được gửi đi cũng sẽ bao gồm mã lỗi cho biết lý do kết thúc gói thuê bao. Gói thuê bao có thể đã bị chấm dứt vì một số lý do (thiếu WRM ACK, lỗi phân bổ ExchangeContext, hết thời gian phản hồi, v.v.) Một số mã lỗi có thể do ứng dụng tạo:
|
||||||||||||
kEvent_OnUpdateComplete
|
Một sự kiện cho biết việc hoàn tất quá trình cập nhật. Thông số sự kiện sẽ cho biết quá trình cập nhật một đường dẫn đặc điểm cụ thể thành công hay không thành công. |
ResubscribePolicyCallback
void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
Lệnh gọi lại để tìm nạp khoảng thời gian chờ trước lần đăng ký lại tiếp theo.
Ứng dụng được phép huỷ đăng ký/miễn phí trong hàm này nếu chúng đã quyết định từ bỏ việc đăng ký lại.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Tham số |
|
Hàm 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 trong khoảng thời gian tăng dần, theo trình tự fibonacci tối đa WDM_RESUBSCRIPTION_MAX_FIBONACCI_STEP_INDEX.
Thời gian chờ ngẫu nhiên trung bình sau WDM_RESUBSCRIPTION_MAX_FIBONACCI_STEP_INDEX sẽ là khoảng một giờ. Khi số lần thử lại được đặt lại về 0, trình tự sẽ bắt đầu lại từ đầu.
Hàm công khai
AbortSubscription
void AbortSubscription( void )
Huỷ gói thuê bao.
Huỷ đăng ký ứng dụng.
Ngay lập tức ngừng chấp nhận tất cả lưu lượng truy cập liên quan đến gói thuê bao và giải phóng tất 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 hàng đăng ký mà không thông báo cho nhà xuất bản đăng ký và không gửi sự kiện OnSubscriptionTerminated
tới trình xử lý sự kiện của ứng dụng. Nếu có một gói thuê bao chung, gói thuê bao bộ đếm cũng sẽ bị chấm dứt.
Khi gọi AbortSubscription(), đối tượng SubscriptionClient
sẽ chuyển sang trạng thái Terminated
. Sau khi quá trình chấm dứt hoàn tất, đối tượng sẽ chuyển sang trạng thái Initialized
. Cả hai quá trình chuyển đổi đều diễn ra đồng bộ trong lệnh gọi AbortSubscription().
Sau khi AbortSubscription() được trả về, đối tượng SubscriptionClient
có thể được dùng để bắt đầu một gói thuê bao khác hoặc 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.
Thao tác này sẽ huỷ nếu yêu cầu đăng ký lại đang chờ xử lý.
DiscardUpdates
void DiscardUpdates()
Yêu cầu SubscriptionClient xoá tập hợp TraitPath đang chờ cập nhật và huỷ 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 tính năng tự động đăng ký lại.
Đính kèm một lệnh gọi lại để chỉ định lần thử lại tiếp theo khi không thành công.
Thông tin chi tiết | |||
---|---|---|---|
Tham số |
|
EndSubscription
WEAVE_ERROR EndSubscription( void )
Kết thúc gói thuê bao.
Kết thúc linh hoạt gói thuê bao của ứng dụng.
Khi bật tuỳ chọn thời gian biên dịch WDM_ENABLE_SUBSCRIPTION_CANCEL, hãy kết thúc gói đăng ký một cách linh hoạt bằng cách gửi Yêu cầu huỷ cho ứng dụng ngang hàng. Các tài nguyên liên kết với gói thuê bao được giải phóng khi ứng dụng ngang hàng phản hồi hoặc khi hết thời gian chờ. Khi tuỳ chọn này bị tắt, lệnh gọi tương đương với AbortSubscription().
Chấm dứt tạm thời ứng dụng khách của một gói thuê bao. Nếu bạn bật tính năng hỗ trợ huỷ gói thuê bao, thì thông báo SubscriptionsCancelRequest sẽ được gửi đến nhà xuất bản gói thuê bao và hệ thống sẽ chờ phản hồi trước khi chấm dứt gói thuê bao; nếu không, gói thuê bao sẽ bị chấm dứt ngay lập tức theo cách tương tự như AbortSubscription(). Nếu có một gói thuê bao chung, gói thuê bao bộ đếm cũng sẽ bị chấm dứt.
Trong khi đợi phản hồi cho một SubscriptionsCancelRequest, SubscriptionClient
sẽ chuyển sang trạng thái Canceling
.
Sau khi quy trình chấm dứt bắt đầu, đối tượng SubscriptionClient
sẽ chuyển sang trạng thái Terminated
và một sự kiện OnSubscriptionTerminated
được gửi đến trình xử lý sự kiện của ứng dụng. Xin lưu ý rằng nếu bạn không bật tính năng hỗ trợ huỷ, thì trình xử lý sự kiện có thể được gọi đồng bộ trong lệnh gọi đến 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 dùng để bắt đầu một gói thuê bao khác hoặc có thể được giải phóng bằng cách gọi phương thức Free().
FlushUpdate
WEAVE_ERROR FlushUpdate()
Tín hiệu cho thấy ứng dụng đã thay đổi xong tất cả TraitUpdatableDataSinks.
Trừ phi quá trình trao đổi bản cập nhật trước đó đang diễn ra, ứng dụng sẽ lấy tất cả dữ liệu được đánh dấu là đã cập nhật rồi gửi dữ liệu đó cho 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ỳ chuỗi nào.
Thông tin chi tiết | |||
---|---|---|---|
Tham số |
|
||
Trả về |
WEAVE_NO_ERROR trong trường hợp thành công; các mã WEAVE_ERROR khác phòng 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.
Giải phóng một đối tượng SubscriptionClient
.
Gọi AbortSubscription() nếu cần và huỷ bỏ số lượt giới thiệu trên đối tượng SubscriptionClient này. Nếu sử dụng đúng cách, thao tác này sẽ cho phép trả về đối tượng về nhóm đối tượng
Giải phóng đối tượng SubscriptionClient
. Nếu gói thuê bao đang hoạt động hoặc đang diễn ra, thì gói thuê bao đó sẽ bị chấm dứt ngay lập tức theo cách tương tự như lệnh gọi AbortSubscription(). Nếu có yêu cầu cập nhật đang được thực hiện thì các yêu cầu đó sẽ bị huỷ theo cách tương tự.
Ứng dụng chịu trách nhiệm gọi Free() chính xác một lần trong suốt thời gian hoạt động của đối tượng SubscriptionClient
. Sau khi gọi Free(), bạn không nên tham chiếu thêm đến đố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 trình khởi tạo (trái ngược với trình đếm) và hiển thị gói thuê bao nếu không phải.
IsCanceling
bool IsCanceling() const
IsEstablished
bool IsEstablished()
IsEstablishedIdle
bool IsEstablishedIdle()
IsFree
bool IsFree()
IsInProgressOrEstablished
bool IsInProgressOrEstablished()
IsInResubscribeHoldoff
bool IsInResubscribeHoldoff()
IsRetryEnabled
bool IsRetryEnabled()
IsTerminated
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 )
Xoá cơ chế đăng ký lại.
Thao tác 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()
Yêu cầu SubscriptionClient dừ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ác bản 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. Quá trình 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ác bản cập nhật trong khi đang diễn ra, quá trình cập nhật sẽ không bị huỷ nhưng trong trường hợp không thành công, hệ thống sẽ không thử lại cho đến khi FlushUpdate được gọi lại.
UnlockUpdateMutex
void UnlockUpdateMutex( void )