nl:: Weave:: Hồ sơ:: DataManagement_current:: GóiClient
Tóm tắt
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ý đế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 khi đă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 khung thời gian ngẫu nhiên có độ phân giải theo mili giây trên một cửa sổ ngày càng tăng, theo trình tự fibonacci lên đến WDM_RESUBSCRIBE_MAX_FIBONACCI_START_INDEX.
|
Hàm công khai |
|
---|---|
AbortSubscription(void)
|
void
Hủy gói đăng ký.
|
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
|
|
DisableResubscribe(void)
|
void
Hãy tắt cơ chế đăng ký lại.
|
DiscardUpdates()
|
void
Yêu cầu subscriptionClient trống nhóm TraitPath đang chờ cập nhật và hủy yêu cầu cập nhật đang 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 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 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 GóiClient làm trình khởi tạo (chứ không phải người đăng ký bộ đếm) và hiển thị gói đăng ký 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
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 ngừng thử lại yêu cầu cập nhật.
|
UnlockUpdateMutex(void)
|
void
|
Cấu trúc |
|
---|---|
nl:: |
|
nl:: |
Liên minh |
|
---|---|
nl:: |
|
nl:: |
Loại công khai
@130
@130
Lệnh gọi lại sự kiện
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ý đến ứng dụng.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
Mã sự kiện
EventID
Thuộc tính | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kEvent_OnEventStreamReceived
|
Được tạo khi subscriptionengine bao gồm một luồng sự kiện trong thông báo MessageRequest. Hiện tại, ứng dụng có thể gọi EndGói(), Phá hủy gói() hoặc Miễn phí(). |
||||||||||||
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 tùy chọn cài đặt ExchangeContext, |
||||||||||||
kEvent_OnNoMorePendingUpdates
|
Một sự kiện cho biết rằng tất cả đường dẫn trong nhóm bản cập nhật đã được ứng dụng ngang hàng xử lý và bạn không cần cập nhật thêm đường dẫn nào khác. |
||||||||||||
kEvent_OnNotificationProcessed
|
Được tạo khi subscriptionengine hoàn tất quá trình tiếp tục thông báo RequestRequest. Hiện tại, ứng dụng có thể gọi EndGói(), Phá hủy gói() hoặc Miễn phí(). |
||||||||||||
kEvent_OnNotificationRequest
|
Được tạo khi tiếp nhận một RequestRequest. Hiện tại, ứng dụng có thể gọi EndGói(), Phá hủy gói() hoặc Miễn phí(). |
||||||||||||
kEvent_OnSubscribeRequestPrepareNeeded
|
Được gửi khi công cụ sẵn sàng gửi Gói yêu cầu đăng ký. Đơn đăng ký dự kiến sẽ điền vào các đường dẫn mà ứng dụng muốn đăng ký. |
||||||||||||
kEvent_OnSubscriptionActivity
|
Sự kiện cho biết hoạt động đăng ký. Mã này đượ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 gói đăng ký thành công, nhận Yêu cầu thông báo 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 thành công gói đăng ký. Hiện tại, ứng dụng có thể gọi EndGói(), Phá hủy gói() hoặc Miễn phí(). |
||||||||||||
kEvent_OnSubscriptionTerminated
|
Đánh dấu kết thúc gói đăng ký này. Các thông số được gửi đến nl::Weave::Profiles::DataManagement_Current::GóiClient::EventCallback sẽ cho biết liệu hệ thống có tự động đă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 này có thể gọi PháGói thuê bao() hoặc Miễn phí() ở 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 đăng ký. Gói đăng ký 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 chờ phản hồi,...) 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 thành bản cập nhật. Các thông số sự kiện sẽ cho biết liệu việc cập nhật một đường dẫn đặc điểm cụ thể đã thành công hay không. |
Chính sách đăng ký lại
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 khi đăng ký lại tiếp theo.
Ứng dụng được phép hủy/miễn phí trong chức năng này nếu ứng dụng quyết định từ bỏ đăng ký lại.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các thông số |
|
Hàm tĩnh công khai
Trình xử lý sự kiện mặc định
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 khung thời gian ngẫu nhiên có độ phân giải theo mili giây trên một cửa sổ ngày càng tăng, theo trình tự fibonacci lên đến WDM_RESUBSCRIBE_MAX_FIBONACCI_START_INDEX.
Thời gian chờ trung bình vượt qua WDM_RESUBSCRIBE_MAX_FIBONACCI_ADDITIONAL_INDEX sẽ là khoảng một giờ. Khi số lần thử đặt lại về 0, trình tự bắt đầu lại từ đầu.
Hàm công khai
Hủy đăng ký
void AbortSubscription( void )
Hủy gói đăng ký.
Hủy gói đă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 được liên kết với gói thuê bao và giải phóng tất cả các tài nguyên liên lạc cơ bản. Đối tượng subscriptionClient vẫn hợp lệ và có thể dùng lại.
Chấm dứt thời gian kết thúc của gói đăng ký mà không thông báo cho nhà xuất bản gói đăng ký và không phân phối sự kiện OnSubscriptionTerminated
cho trình xử lý sự kiện của ứng dụng. Nếu có một gói đăng ký tương hỗ, thì gói đăng ký của bộ đếm cũng bị chấm dứt.
Khi gọi Destroysubscription(), đố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 tới PháGói thuê bao().
Sau khi HủyGói thuê bao() 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().
Đã cập nhật
WEAVE_ERROR ClearUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle )
Vô hiệu hóa đăng ký lại
void DisableResubscribe( void )
Hãy tắt cơ chế đăng ký lại.
Quy trình này sẽ hủy nếu bạn đang chờ đăng ký lại.
Loại bỏ nội dung cập nhật
void DiscardUpdates()
Yêu cầu subscriptionClient trống nhóm TraitPath đang chờ cập nhật và hủy yêu cầu cập nhật đang 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.
Bật tính năng đăng ký lại
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 thời gian thử tiếp theo không thành công.
Thông tin chi tiết | |||
---|---|---|---|
Các thông số |
|
Kết thúc gói thuê bao
WEAVE_ERROR EndSubscription( void )
Kết thúc gói thuê bao.
Kết thúc đăng ký ứng dụng một cách nhanh chóng.
Khi tùy chọn thời gian biên dịch WDM_ENABLE_SUBSCRIPTION_CANCEL được bật, bạn có thể kết thúc gói đăng ký một cách khéo léo bằng cách gửi một Yêu cầu hủy cho đồng nghiệp. Các tài nguyên liên kết với gói thuê bao được giải phóng khi phản hồi từ ứng dụng ngang hàng hoặc hết thời gian chờ. Khi bạn tắt lựa chọn này, lệnh gọi sẽ tương đương với PháGói thuê bao().
Chấm dứt kết thúc gói đăng ký của khách hàng một cách nhanh chóng. Nếu bạn bật tính năng hỗ trợ hủy gói đăng ký, thì hệ thống sẽ gửi thông báo Hủy đăng ký đến nhà xuất bản gói đăng ký và hệ thống sẽ chờ phản hồi trước khi chấm dứt gói đăng ký. Nếu không, gói đăng ký sẽ bị chấm dứt ngay lập tức theo cách tương tự như Hủy đăng ký(). Nếu có gói đăng ký tương hỗ, thì gói đăng ký của đối tác cũng bị chấm dứt.
Trong khi chờ phản hồi cho các yêu cầu Hủy đăng ký, 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à một sự kiện OnSubscriptionTerminated
sẽ được gửi đến trình xử lý sự kiện của ứng dụng. Xin lưu ý rằng nếu không bật tính năng hỗ trợ, 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().
Cập nhật FlushUpdate
WEAVE_ERROR FlushUpdate()
Các tín hiệu cho thấy ứng dụng đã thay đổi xong tất cả TraitUpdatableDataSinks.
Nếu chưa có một cuộc trao đổi cập nhật trước đó, thì ứng dụ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 trả lờ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 | |||
---|---|---|---|
Các thông 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.
|
Cập nhật 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 đối tượng SubscriptionClient
.
Gọi Hủy đăng ký() nếu cần và phát hành phần tử từ chối trên đối tượng GóiClient này. Trong các trường hợp sử dụng chính xác, thao tác này sẽ cho phép trả lại đối tượng cho nhóm đối tượng
Giải phóng đối tượng SubscriptionClient
. Nếu một gói thuê bao đang hoạt động hoặc đang diễn ra, thì gói thuê bao này sẽ bị chấm dứt ngay lập tức theo cách tương tự như Hủy gói thuê bao(). Nếu có bất kỳ yêu cầu cập nhật nào đang diễn ra, thì các gói thuê bao đó sẽ bị hủy tương tự.
Ứng dụng chịu trách nhiệm gọi chính xác Free() một lần trong suốt thời gian hoạt động của đối tượng SubscriptionClient
. Sau khi Free() được gọi, không nên thực hiện thêm tham chiếu nào đến đối tượng.
Liên kết
Binding * GetBinding( void ) const
GetLivenessTimeoutMsec
uint32_t GetLivenessTimeoutMsec( void ) const
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
Nhận đăng ký
WEAVE_ERROR GetSubscriptionId( uint64_t *const apSubscriptionId )
Xác định hoạt động
void IndicateActivity( void )
Bắt đầu gói đăng ký bộ đếm
void InitiateCounterSubscription( const uint32_t aLivenessTimeoutSec )
Bắt đầu gói thuê bao
void InitiateSubscription( void )
Định cấu hình GóiClient làm trình khởi tạo (chứ không phải người đăng ký bộ đếm) và hiển thị gói đăng ký nếu không.
Đang hủy
bool IsCanceling() const
Thời điểm thành lập
bool IsEstablished()
Không hoạt động
bool IsEstablishedIdle()
Miễn phí
bool IsFree()
Đang thiết lập hoặc đã thành lập
bool IsInProgressOrEstablished()
IsInResubscriptionHoldoff
bool IsInResubscribeHoldoff()
Đã bật lại
bool IsRetryEnabled()
Chấm dứt
bool IsTerminated()
Đang cập nhật đang chờ xử lý
bool IsUpdatePendingOrInProgress()
LockUpdatex
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.
Đặt lại đăng ký lại
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 lập tức
Đã đặt thời gian chờ
void SetLivenessTimeoutMsec( uint32_t val )
Đã cập nhật
WEAVE_ERROR SetUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional )
SuspendUpdateRetries
void SuspendUpdateRetries()
Yêu cầu subscriptionClient ngừng thử lại 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 phải hủy tất cả siêu dữ liệu. Các bản 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 bản cập nhật trong khi đang cập nhật, bản cập nhật sẽ không bị hủy nhưng trong trường hợp không cập nhật được, bản cập nhật sẽ không được thử lại cho đến khi FlushUpdate được gọi lại.
Mở khóa cập nhật
void UnlockUpdateMutex( void )