Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

nl::Weave::프로필::DataManagement_Current::SubscriptionClient

요약

공개 유형

@130 enum
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
애플리케이션에 구독 이벤트를 전달하는 콜백입니다.
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(*
다음 정기 결제 재신청 전에 대기할 시간 간격을 가져오는 콜백입니다.

공개 정적 함수

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
기본 정책 구현에서는 WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX까지 fibonacci 시퀀스에 따라 계속 증가하는 기간 동안 밀리초를 해결하는 임의의 시간대를 선택합니다.

공개 함수

AbortSubscription(void)
void
구독을 취소합니다.
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe(void)
void
정기 결제 재신청 메커니즘을 사용 중지합니다.
DiscardUpdates()
void
SubscriptionsClient에 업데이트 대기 중인 TraitPath 집합을 비우고 진행 중인 업데이트 요청을 취소하도록 알립니다.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
자동 정기 결제를 사용 설정합니다.
EndSubscription(void)
구독을 종료합니다.
FlushUpdate()
애플리케이션이 모든 TraitUpdatableDataSinks의 변형을 완료했다는 신호
FlushUpdate(bool aForce)
Free(void)
void
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
SubscriptionClient를 카운터 가입자가 아닌 시작자로 구성하고, 가입하지 않은 경우 구독을 불러옵니다.
IsCanceling() const
bool
IsEstablished()
bool
IsEstablishedIdle()
bool
IsFree()
bool
IsInProgressOrEstablished()
bool
IsInResubscribeHoldoff()
bool
IsRetryEnabled()
bool
IsTerminated()
bool
IsUpdatePendingOrInProgress()
bool
LockUpdateMutex(void)
void
OnCatalogChanged()
void
이 메서드는 TraitDataSink 카탈로그가 수정된 경우 호출되어야 합니다.
ResetResubscribe(void)
void
정기 결제 재신청 메커니즘을 시작합니다.
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
SubscriptionClient에 업데이트 요청 재시도를 중지하도록 지시합니다.
UnlockUpdateMutex(void)
void

구조체

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::LastObservedEvent
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::ResubscribeParam

유니온

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

공개 유형

@130

 @130

이벤트 콜백

void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)

애플리케이션에 구독 이벤트를 전달하는 콜백입니다.

세부정보
매개변수
[in] aAppState
SubscriptionClient를 초기화하는 중에 설정된 앱 상태 포인터입니다.
[in] aEvent
진행 중인 이벤트 표시
[in] aInParam
이벤트에 대한 추가 세부정보가 있는 구조체
[out] aOutParam
애플리케이션에서 전달한 정보

EventID

 EventID
속성
kEvent_OnEventStreamReceived

SubscriptionEngine에서 NotificationRequest 메시지 내에 이벤트 스트림을 할당할 때 생성됩니다.

이 시점에서 애플리케이션은 EndSubscription(), AbortSubscription() 또는 Free()를 호출할 수 있습니다.

kEvent_OnExchangeStart

바인딩이 준비되고 ExchangeContext가 설정되고 메시지 전송 전에 생성됩니다.

애플리케이션에서 ExchangeContext 설정을 조정할 수 있는 마지막 기회입니다. mEC은 유효하며 시간 제한 설정에 맞게 조정할 수 있습니다. 애플리케이션은 클라이언트의 다른 필드를 터치해서는 안 되며 ExchangeContext를 닫으면 안 됩니다.

kEvent_OnNoMorePendingUpdates

업데이트 세트의 모든 경로가 피어에 의해 처리되었으며 더 이상 경로를 업데이트할 필요가 없음을 나타내는 이벤트

kEvent_OnNotificationProcessed

SubscriptionEngine에서 NotificationRequest 메시지 처리를 완료하면 생성됩니다.

이 시점에서 애플리케이션은 EndSubscription(), AbortSubscription() 또는 Free()를 호출할 수 있습니다.

kEvent_OnNotificationRequest

NotificationRequest의 수신자에서 생성되었습니다.

이 시점에서 애플리케이션은 EndSubscription(), AbortSubscription() 또는 Free()를 호출할 수 있습니다.

kEvent_OnSubscribeRequestPrepareNeeded

엔진이 SubscriptionRequest를 보낼 준비가 되면 전송됩니다.

애플리케이션이 수신하려는 경로를 채워야 합니다.

kEvent_OnSubscriptionActivity

정기 결제 활동을 나타내는 이벤트

이 목록은 클라이언트가 정기 결제 활동에 대한 표시를 수신할 때마다 생성됩니다. 여기에는 성공적인 정기 결제 설정, NotificationRequest 수신, 구독 확인 메시지에 대한 응답으로 상태 보고서 수신이 포함됩니다.

kEvent_OnSubscriptionEstablished

구독이 성공적으로 설정된 경우 생성됩니다.

이 시점에서 애플리케이션은 EndSubscription(), AbortSubscription() 또는 Free()를 호출할 수 있습니다.

kEvent_OnSubscriptionTerminated

구독 종료를 표시합니다.

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback에 전송된 매개변수는 재구독을 자동으로 시도할지 여부를 나타냅니다.

이벤트 핸들러가 호출되는 동안 클라이언트의 상태는 Terminated가 됩니다. 재시도를 시도하지 않으면 이벤트 핸들러가 반환될 때 클라이언트 상태가 Initialized로 전환됩니다. 그러지 않으면 상태가 ResubscribeHoldoff로 전환되고 홀드오프 시간이 지난 후에 정기 결제를 다시 설정하려고 시도합니다.

애플리케이션은 이 상태에서 AbortSubscription() 또는 Free()를 호출할 수 있습니다.

전송된 매개변수에 정기 결제를 종료하는 이유를 나타내는 오류 코드도 포함됩니다.

여러 가지 이유로 구독이 종료될 수 있습니다 (WRM ACK 누락, ExchangeContext 할당 실패, 응답 시간 제한 등). 클라이언트가 생성할 수 있는 일부 오류 코드는 다음과 같습니다.

오류 코드 의미
WEAVE_ERROR_INVALID_MESSAGE_TYPE 알 수 없는 메시지가 수신되었습니다.
WEAVE_ERROR_TIMEOUT ack이 수신되지 않았거나 활성 확인에 실패했습니다.
WEAVE_ERROR_INCORRECT_STATE 예상치 못한 상태로 메일이 수신되었습니다.
WEAVE_ERROR_STATUS_REPORT_RECEIVED 상태 보고서가 수신됩니다.
WEAVE_ERROR_INVALID_ERRORS 구독 요청 필드가 잘못되었습니다.

kEvent_OnUpdateComplete

업데이트 완료를 나타내는 이벤트입니다.

이벤트 매개변수는 특정 특성 경로 업데이트의 성공 또는 실패 여부를 나타냅니다.

정기 결제 재개 정책

void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)

다음 정기 결제 재신청 전에 대기할 시간 간격을 가져오는 콜백입니다.

재신청을 포기한 경우 이 함수에서 애플리케이션이 취소/무료로 허용될 수 있습니다.

세부정보
매개변수
[in] aAppState
SubscriptionClient를 초기화하는 중에 설정된 앱 상태 포인터입니다.
[in] aInParam
재시도에 대한 추가 세부정보가 있는 구조체
[out] aOutIntervalMsec
다음 재시도 전에 대기하는 시간(밀리초)입니다.

공개 정적 함수

DefaultEventHandler

void DefaultEventHandler(
  EventID aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

DefaultResubscribePolicyCallback

void DefaultResubscribePolicyCallback(
  void *const aAppState,
  ResubscribeParam & aInParam,
  uint32_t & aOutIntervalMsec
)

기본 정책 구현에서는 WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX까지 fibonacci 시퀀스에 따라 계속 증가하는 기간 동안 밀리초를 해결하는 임의의 시간대를 선택합니다.

WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX을(를) 지나 무작위 대기 시간의 평균은 약 1시간입니다. 재시도 횟수가 0으로 재설정되면 시퀀스가 처음부터 다시 시작됩니다.

공개 함수

구독 취소

void AbortSubscription(
  void
)

구독을 취소합니다.

클라이언트 구독을 취소합니다.

구독과 관련된 모든 트래픽을 즉시 중지하고 모든 기본 커뮤니케이션 리소스를 해제합니다. SubscriptionClient 객체 자체는 여전히 유효하며 다시 사용할 수 있습니다.

구독 게시자에게 알리지 않고 애플리케이션의 이벤트 핸들러에 OnSubscriptionTerminated 이벤트를 전달하지 않고 구독의 클라이언트 끝을 종료합니다. 상호 정기 결제가 존재하는 경우 카운터 정기 결제도 종료됩니다.

AbortSubscription()을 호출하면 SubscriptionClient 객체가 Terminated 상태로 전환됩니다. 종료 프로세스가 완료되면 객체는 Initialized 상태로 전환됩니다. 두 전환은 모두 AbortSubscription() 호출 내에서 동기식으로 발생합니다.

AbortSubscription()이 반환되면 SubscriptionClient 객체를 사용하여 다른 구독을 시작하거나 Free() 메서드를 호출하여 해제할 수 있습니다.

지우기 업데이트

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

수신 거부

void DisableResubscribe(
  void
)

정기 결제 재신청 메커니즘을 사용 중지합니다.

정기 결제 재신청이 대기 중인 경우 취소됩니다.

DiscardUpdates

void DiscardUpdates()

SubscriptionsClient에 업데이트 대기 중인 TraitPath 집합을 비우고 진행 중인 업데이트 요청을 취소하도록 알립니다.

이 메서드는 모든 콜백에서 호출할 수 있습니다.

EnableResubscribe 사용 설정

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

자동 정기 결제를 사용 설정합니다.

콜백을 연결하여 실패 시 다음 재시도 시간을 지정합니다.

세부정보
매개변수
[in] aCallback
실패 후 재시도하기 전에 대기할 시간을 가져오는 선택적 콜백입니다. NULL인 경우 기본 정책을 사용합니다.

구독 종료

WEAVE_ERROR EndSubscription(
  void
)

구독을 종료합니다.

클라이언트 구독을 정상적으로 종료합니다.

WDM_ENABLE_SUBSCRIPTION_CANCEL 컴파일 시간 옵션이 사용 설정되면 피어에 CancelRequest를 전송하여 구독을 적절하게 종료하세요. 피어의 응답이나 시간 초과 시 구독과 연결된 리소스가 해제됩니다. 옵션을 사용 중지하면 호출은 AbortSubscription()과 같습니다.

클라이언트 측의 정기 결제 종료를 정상적으로 종료합니다. 정기 결제 취소 지원이 사용 설정된 경우 SubscriptionCancelRequest 메시지가 구독 게시자에게 전송되며 시스템에서 구독을 종료하기 전에 답장을 기다립니다. 그렇지 않으면 구독이 AbortSubscription()과 유사한 방식으로 즉시 종료됩니다. 상호 구독이 존재하는 경우 카운터 구독도 종료됩니다.

SubscriptionCancelRequest에 대한 응답을 기다리는 동안 SubscriptionClientCanceling 상태로 전환됩니다.

종료 프로세스가 시작되면 SubscriptionClient 객체가 Terminated 상태로 전환되고 OnSubscriptionTerminated 이벤트가 애플리케이션의 이벤트 핸들러로 전달됩니다. 취소 지원이 사용 설정되지 않은 경우 EndSubscription() 호출 내에서 이벤트 핸들러가 동기식으로 호출될 수 있습니다.

애플리케이션의 이벤트 핸들러가 반환되면 SubscriptionClient 객체는 Initialized 상태로 전환됩니다. 이 시점에서 SubscriptionClient 객체를 사용하여 다른 정기 결제를 시작하거나 Free() 메서드를 호출하여 해제할 수 있습니다.

삭제 업데이트

WEAVE_ERROR FlushUpdate()

애플리케이션이 모든 TraitUpdatableDataSinks의 변형을 완료했다는 신호

이전 업데이트 교환이 진행되지 않는 한, 클라이언트는 업데이트로 표시된 모든 데이터를 한 번의 업데이트 요청으로 응답자에게 전송합니다. 이 메서드는 모든 스레드에서 호출될 수 있습니다.

세부정보
매개변수
[in] aForce
true인 경우 향후 재시도가 예약된 경우에도 업데이트가 즉시 전송됩니다. 이 매개변수는 기본적으로 false로 간주됩니다.
반환
성공 시 WEAVE_NO_ERROR가 발생한 경우 실패 시 다른 WEAVE_ERROR 코드

삭제 업데이트

WEAVE_ERROR FlushUpdate(
  bool aForce
)

무료

void Free(
  void
)

SubscriptionClient 객체를 해제합니다.

SubscriptionClient 객체를 해제합니다.

필요한 경우 AbortSubscription()을 호출하고 이 subscriptionClient 객체의 참조를 해제합니다. 올바르게 사용하면 객체 풀로 객체를 반환할 수 있습니다.

SubscriptionClient 객체를 해제합니다. 정기 결제가 활성 상태이거나 진행 중인 경우 AbortSubscription() 호출과 유사한 방식으로 정기 결제가 즉시 종료됩니다. 진행 중인 업데이트 요청도 취소됩니다.

애플리케이션은 SubscriptionClient 객체의 전체 기간 동안 정확히 Free()를 한 번 호출해야 합니다. Free()가 호출되면 객체를 추가로 참조해서는 안 됩니다.

GetBinding

Binding * GetBinding(
  void
) const 

GetLivenessTimeoutMsec

uint32_t GetLivenessTimeoutMsec(
  void
) const 

피어 피어 ID 가져오기

uint64_t GetPeerNodeId(
  void
) const 

구독 구독 ID

WEAVE_ERROR GetSubscriptionId(
  uint64_t *const apSubscriptionId
)

표시 활동

void IndicateActivity(
  void
)

Counter 카운터 구독

void InitiateCounterSubscription(
  const uint32_t aLivenessTimeoutSec
)

구독 시작

void InitiateSubscription(
  void
)

SubscriptionClient를 카운터 가입자가 아닌 시작자로 구성하고, 가입하지 않은 경우 구독을 불러옵니다.

취소 중

bool IsCanceling() const 

설정됨

bool IsEstablished()

IsSetedIdle

bool IsEstablishedIdle()

쉬움

bool IsFree()

진행 중 또는 준비됨

bool IsInProgressOrEstablished()

다시 수신 대기 보류

bool IsInResubscribeHoldoff()

IsRetryEnabled

bool IsRetryEnabled()

해지됨

bool IsTerminated()

IsUpdatePendingOrInProgress

bool IsUpdatePendingOrInProgress()

LockUpdate뮤텍스

void LockUpdateMutex(
  void
)

OnCatalogChanged

void OnCatalogChanged()

이 메서드는 TraitDataSink 카탈로그가 수정된 경우 호출되어야 합니다.

재설정

void ResetResubscribe(
  void
)

정기 결제 재신청 메커니즘을 시작합니다.

즉시 재시도가 시작됩니다.

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

설정됨

WEAVE_ERROR SetUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle,
  bool aIsConditional
)

SuspendUpdateRetries

void SuspendUpdateRetries()

SubscriptionClient에 업데이트 요청 재시도를 중지하도록 지시합니다.

애플리케이션이 모든 메타데이터를 삭제하지 않고 일정 기간 동안 업데이트를 일시중지하도록 허용합니다. FlushUpdate가 호출되면 업데이트 및 재시도가 재개됩니다. 진행 중인 업데이트를 정지하기 위해 호출하면 업데이트가 취소되지 않지만 실패하는 경우 FlushUpdate가 다시 호출될 때까지 재시도되지 않습니다.

잠금 해제 업데이트

void UnlockUpdateMutex(
  void
)