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 để truyền các sự kiện của gói thuê bao đế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 không ngừng tăng, theo chuỗi fibonacci tối đa WDM_REsubscriptions_MAX_FIBONACCI_STEP_INDEX.
|
Hàm công khai |
|
---|---|
AbortSubscription(void)
|
void
Huỷ gói thuê bao này.
|
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 được thực hiện, 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()
|
Các tín hiệu cho biết ứng dụng đã thay đổi xong tất 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 trình tạo (trái ngược với trình đăng ký bộ đếm) và kích hoạt gói thuê bao nếu chưa được.
|
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
Bắt đầu 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:: |
Hiệp hội |
|
---|---|
nl:: |
|
nl:: |
Loại công khai
@130
@130
EventCallback
void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
Lệnh gọi lại để truyền các sự kiện của gói thuê bao đến ứng dụng.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Các 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. Tại thời điểm này, ứng dụng có thể gọi EndSubscription(), AbortSubscription() hoặc Free(). |
||||||||||||
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 cài đặt ExchangeContext, |
||||||||||||
kEvent_OnNoMorePendingUpdates
|
Một sự kiện cho biết tất 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 nữa. |
||||||||||||
kEvent_OnNotificationProcessed
|
Được tạo khi SubscriptionEngine xử lý xong thông báo NotificationRequest. Tại thời điểm này, ứng dụng có thể gọi EndSubscription(), AbortSubscription() hoặc Free(). |
||||||||||||
kEvent_OnNotificationRequest
|
Được tạo trên bên nhận của NotificationRequest. Tại thời điểm này, ứng dụng có thể gọi EndSubscription(), AbortSubscription() hoặc Free(). |
||||||||||||
kEvent_OnSubscribeRequestPrepareNeeded
|
Được gửi khi công cụ sẵn sàng gửi SubscriptionRequest. Ứng dụng dự kiến 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 đăng ký. Mã 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 được báo cáo trạng thái phản hồi thông báo SubscribeConfirm. |
||||||||||||
kEvent_OnSubscriptionEstablished
|
Được tạo khi thiết lập gói thuê bao thành công. Tại thời điểm này, ứng dụng có thể gọi EndSubscription(), AbortSubscription() hoặc Free(). |
||||||||||||
kEvent_OnSubscriptionTerminated
|
Đánh dấu kết thúc gói thuê bao này. Các thông số được gửi đến tệp nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback sẽ cho biết liệu 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 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, thời gian chờ phản hồi, v.v.) Một số mã lỗi có thể do ứng dụng tạo ra:
|
||||||||||||
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 liệu quá trình cập nhật một đường dẫn trait cụ thể đã thành công hay khô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.
Các ứng dụng được phép huỷ/miễn phí trong chức năng này nếu đã quyết định từ bỏ việc đăng ký lại.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các 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 không ngừng tăng, theo chuỗi fibonacci tối đa WDM_REsubscriptions_MAX_FIBONACCI_STEP_INDEX.
Thời gian chờ trung bình ngẫu nhiên sau WDM_RE tái bắt đầu_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 này.
Huỷ gói thuê bao ứng dụng.
Ngay lập tức dừng chấp nhận tất cả lưu lượng truy cập liên kết với 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 gói thuê bao của khách hàng mà không thông báo cho nhà xuất bản gói thuê bao và không gửi sự kiện OnSubscriptionTerminated
đến trình xử lý sự kiện của ứng dụng. Nếu tồn tại một gói thuê bao chung, thì 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 xảy ra đồng bộ trong lệnh gọi đến AbortSubscription().
Sau khi AbortSubscription() trả về, đối tượng SubscriptionClient
có thể được dùng để tạo 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 được thực hiện, 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 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 | |||
---|---|---|---|
Các tham số |
|
EndSubscription
WEAVE_ERROR EndSubscription( void )
Kết thúc gói thuê bao.
Kết thúc gói thuê bao ứng dụng một cách linh hoạt.
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 thuê bao một cách linh hoạt bằng cách gửi CancelRequest cho ứng dụng ngang hàng. Các tài nguyên liên kết với gói thuê bao sẽ đượ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 linh hoạt phía máy khách của gói thuê bao. Nếu bạn bật chế độ hỗ trợ huỷ gói thuê bao, thì hệ thống sẽ gửi thông báo SubscriptionCancelRequest đế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 tồn tại một gói thuê bao chung thì gói thuê bao bộ đếm cũng sẽ bị chấm dứt.
Trong khi chờ phản hồi một SubscriptionCancelRequest, SubscriptionClient
sẽ chuyển sang trạng thái Canceling
.
Sau khi quá trình chấm dứt bắt đầu, đối tượng SubscriptionClient
sẽ chuyển sang trạng thái 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 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()
Các tín hiệu cho biết ứng dụng đã thay đổi xong tất cả TraitUpdatableDataSinks.
Nếu không thực hiện trao đổi thông tin cập nhật trước đó, máy khách sẽ lấy tất cả dữ liệu được đánh dấu là đã cập nhật và gửi cho người trả lời trong một yêu cầu cập nhật. Bạn có thể gọi phương thức này từ bất kỳ chuỗi nào.
Thông tin chi tiết | |||
---|---|---|---|
Các tham số |
|
||
Trả về |
WEAVE_NO_ERROR trong trường hợp thành công; các 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ố tham chiếu trên đối tượng SubscriptionClient này. Trong phần sử dụng đúng, thuộc tính này sẽ cho phép trả về đối tượng vào 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ư gọi AbortSubscription(). Còn nếu đang thực hiện bất kỳ yêu cầu cập nhật nào thì các yêu cầu đó cũng sẽ bị huỷ 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 cần tham chiếu thêm nữa đế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 tạo (trái ngược với trình đăng ký bộ đếm) và kích hoạt gói thuê bao nếu chưa được.
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 )
Bắt đầu cơ chế đăng ký lại.
Thao tác này sẽ bắt đầu thử lại ngay
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 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 một bản cập nhật đang diễn ra, bản cập nhật đó sẽ không bị huỷ nhưng trong trường hợp không thành công, thì bản cập nhật đó sẽ không được thử lại cho đến khi FlushUpdate được gọi lại.
UnlockUpdateMutex
void UnlockUpdateMutex( void )