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) typedef
void(*
Gọi lại để chuyển các sự kiện đăng ký đến ứng dụng.
EventID{
  kEvent_OnSubscriptionTerminated = 1,
  kEvent_OnExchangeStart = 2,
  kEvent_OnSubscribeRequestPrepareNeeded = 3,
  kEvent_OnSubscriptionEstablished = 4,
  kEvent_OnNotificationRequest = 5,
  kEvent_OnNotificationProcessed = 6,
  kEvent_OnEventStreamReceived = 7,
  kEvent_OnSubscriptionActivity = 8,
  kEvent_OnUpdateComplete = 9,
  kEvent_OnNoMorePendingUpdates = 10
}
enum
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec) typedef
void(*
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
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::Weave::Hồ sơ::DataManagement_Current::GóiClient::Lần quan sát cuối cùng
nl::Weave::Profiles::DataManagement_Current::GóiClient::Đăng ký lại

Liên minh

nl::Weave::Profiles::DataManagement_Current::GóiClient::InEventParam
nl::Weave::Hồ sơ::DataManagement_Current::GóiClient::OutEventParam

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ố
[in] aAppState
Con trỏ trạng thái ứng dụng đã đặt trong quá trình khởi tạo GóiClient.
[in] aEvent
Cho biết sự kiện nào đang diễn ra
[in] aInParam
Tạo cấu trúc với thông tin chi tiết bổ sung về sự kiện
[out] aOutParam
Thông tin được ứng dụng gửi lại

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, mEC hợp lệ và có thể được điều chỉnh để áp dụng tùy chọn cài đặt thời gian chờ. Ứng dụng không được chạm vào các trường khác trong ứng dụng và không được đóng 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à Terminated. Nếu không cố gắng thử lại, trạng thái của ứng dụng sẽ chuyển đổi sang Initialized khi trình xử lý sự kiện quay trở lại. Nếu không, trạng thái sẽ chuyển thành ResubscribeHoldoff và bạn sẽ cố gắng thiết lập lại gói đăng ký sau thời gian tạm ngưng.

Ứ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:

Mã lỗi Ý nghĩa
WEAVE_ERROR_INVALID_MESSAGE_TYPE Đã nhận được một thông báo không nhận dạng được.
WEAVE_ERROR_ROWS Không nhận được thông tin xác thực hoặc không kiểm tra được tình trạng hoạt động của thiết bị.
WEAVE_ERROR_ININ_STATE Thư được nhận ở trạng thái không mong muốn.
WEAVE_ERROR_STATUS_REPORT_AVAILABLE Đã nhận được báo cáo trạng thái.
WEAVE_ERROR_INVALID_ISBN Các trường yêu cầu đăng ký không hợp lệ.

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ố
[in] aAppState
Con trỏ trạng thái ứng dụng đã đặt trong quá trình khởi tạo GóiClient.
[in] aInParam
Cấu trúc với thông tin chi tiết bổ sung về lần thử lại
[out] aOutIntervalMsec
Thời gian tính bằng mili giây chờ trước khi thử lại tiếp theo

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ố
[in] aCallback
Lệnh gọi lại không bắt buộc để tìm nạp khoảng thời gian chờ trước khi thử lại sau khi gặp lỗi. Nếu NULL có thể sử dụng chính sách mặc định.

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ố
[in] aForce
Nếu được đặt thành đúng, thì bản cập nhật sẽ được gửi ngay lập tức ngay cả khi bạn đã lên lịch thử lại trong tương lai. Theo mặc định, thông số này được coi là false.
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
)