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 để 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 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
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::Weave::Profiles::DataManagement_Current::SubscriptionClient::LastObservedEvent
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::ResubscribeParam

Liên đoàn

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

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ố
[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ó thông tin chi tiết bổ sung về sự kiện
[out] aOutParam
Thông tin được ứ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.

Ứ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. mEC là hợp lệ và có thể được điều chỉnh theo chế độ cài đặt thời gian chờ. Ứng dụng không được tiếp xúc với 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ả 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à Terminated. Nếu bạn không thử lại, trạng thái của ứng dụng sẽ chuyển sang 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à hệ thống sẽ cố gắng thiết lập lại gói thuê bao 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 đ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:

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 Tin nhắn được nhận trong 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 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ố
[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 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 lần 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 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ố
[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ị NULL 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 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ố
[in] aForce
Nếu giá trị này là true, thì hệ thống sẽ gửi thông tin cập nhật 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, 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 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
)