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) typedef
void(*
Lệnh gọi lại để truyền các sự kiện của gói thuê bao đế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 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
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::Weave::Profiles::DataManagement_Current::SubscriptionClient::LastObservedEvent
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::ResubscribeParam

Hiệp hội

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::InEventParam
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::OutEventParam

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

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

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

Mã lỗi Ý nghĩa
WEAVE_ERROR_INVALID_MESSAGE_TYPE Đã nhận được một thư không xác định.
WEAVE_ERROR_TIMEOUT Không nhận được thông báo xác nhận hoặc không kiểm tra được người thật.
WEAVE_ERROR_INCORRECT_STATE Thư nhận được ở trạng thái không mong muốn.
WEAVE_ERROR_STATUS_REPORT_RECEIVED Đã nhận được báo cáo trạng thái.
WEAVE_ERROR_INVALID_ARGUMENT 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 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ố
[in] aAppState
Con trỏ trạng thái ứng dụng được đặt trong quá trình khởi chạy SubscriptionClient.
[in] aInParam
Cấu trúc có thông tin bổ sung về lần thử lại
[out] aOutIntervalMsec
Thời gian tính bằng mili giây cần chờ trước khi thử lại tiếp theo

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ố
[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 không thành công. Nếu giá trị là NULL thì hãy sử dụng một chính sách mặc định.

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ố
[in] aForce
Nếu đúng, thì hệ thống sẽ gửi nội dung cập nhật ngay lập tức ngay cả khi đã lên lịch thử lại trong tương lai. Theo mặc định, tham 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.

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
)