nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
요약
공개 유형 |
|
---|---|
@130
|
enum |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
애플리케이션에 구독 이벤트를 전달하는 콜백입니다. |
EventID{
|
enum |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedefvoid(*
다음 정기 결제를 재신청하기 전에 대기하는 시간 간격을 가져오는 콜백입니다. |
공개 정적 함수 |
|
---|---|
DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
|
void
기본 정책 구현에서는 피보나치 시퀀스에 따라 WDM_RESUBSCRIPTION_MAX_FIBONACCI_STEP_INDEX까지 계속 증가하는 기간 동안 밀리초 단위의 해상도를 사용하는 임의의 타임슬롯을 선택합니다.
|
공개 함수 |
|
---|---|
AbortSubscription(void)
|
void
정기 결제를 취소합니다.
|
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
|
|
DisableResubscribe(void)
|
void
정기 결제 재신청 메커니즘을 사용 중지합니다.
|
DiscardUpdates()
|
void
업데이트 대기 중인 TraitPath 집합을 비우고 진행 중인 업데이트 요청(있는 경우)을 취소하도록 SubscriptionClient에 지시합니다.
|
EnableResubscribe(ResubscribePolicyCallback aCallback)
|
void
자동 정기 결제 재신청을 사용 설정합니다.
|
EndSubscription(void)
|
구독을 종료합니다.
|
FlushUpdate()
|
애플리케이션에서 모든 TraitUpdatableDataSinks의 변형을 완료했음을 나타냅니다.
|
FlushUpdate(bool aForce)
|
|
Free(void)
|
void
이 SubscriptionClient 객체를 해제합니다.
|
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
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:: |
|
nl:: |
Union |
|
---|---|
nl:: |
|
nl:: |
공개 유형
@130
@130
EventCallback
void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
애플리케이션에 구독 이벤트를 전달하는 콜백입니다.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
EventID
EventID
속성 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kEvent_OnEventStreamReceived
|
SubscriptionEngine이 NotificationRequest 메시지 내에 이벤트 스트림을 포함할 때 생성됩니다. 이 시점에서 애플리케이션은 EndSubscription(), AbortSubscription() 또는 Free()를 호출할 수 있습니다. |
||||||||||||
kEvent_OnExchangeStart
|
바인딩이 준비되고 ExchangeContext가 설정된 후 메시지가 전송되기 전에 생성됩니다. 애플리케이션이 ExchangeContext 설정을 조정할 수 있는 마지막 기회입니다. |
||||||||||||
kEvent_OnNoMorePendingUpdates
|
업데이트 세트의 모든 경로가 피어에 의해 처리되었으며 더 이상 경로를 업데이트할 필요가 없음을 나타내는 이벤트입니다. |
||||||||||||
kEvent_OnNotificationProcessed
|
SubscriptionEngine이 NotificationRequest 메시지 처리를 완료하면 생성됩니다. 이 시점에서 애플리케이션은 EndSubscription(), AbortSubscription() 또는 Free()를 호출할 수 있습니다. |
||||||||||||
kEvent_OnNotificationRequest
|
NotificationRequest의 수신에서 생성됩니다. 이 시점에서 애플리케이션은 EndSubscription(), AbortSubscription() 또는 Free()를 호출할 수 있습니다. |
||||||||||||
kEvent_OnSubscribeRequestPrepareNeeded
|
엔진이 SubscriptionRequest를 보낼 준비가 되면 전송됩니다. 애플리케이션은 구독하려는 경로를 채워야 합니다. |
||||||||||||
kEvent_OnSubscriptionActivity
|
구독 활동을 나타내는 이벤트입니다. 클라이언트가 구독 활동에 관한 표시를 수신할 때마다 생성됩니다. 여기에는 성공적인 구독 설정, NotificationRequest의 수신 또는 SubscriptionConfirm 메시지에 대한 응답으로 상태 보고서 수신이 포함됩니다. |
||||||||||||
kEvent_OnSubscriptionEstablished
|
정기 결제 설정 시 생성됩니다. 이 시점에서 애플리케이션은 EndSubscription(), AbortSubscription() 또는 Free()를 호출할 수 있습니다. |
||||||||||||
kEvent_OnSubscriptionTerminated
|
이 구독의 종료를 표시합니다. nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback에 전송된 매개변수는 구독 재신청을 자동으로 시도할지 여부를 나타냅니다. 이벤트 핸들러를 호출하는 동안 클라이언트의 상태는 애플리케이션은 이 상태에서 AbortSubscription() 또는 Free()를 호출할 수 있습니다. 전송되는 매개변수에는 정기 결제 종료 이유를 나타내는 오류 코드도 포함됩니다. 구독은 여러 가지 이유로 종료되었을 수 있습니다 (WRM ACK 누락, ExchangeContext 할당 실패, 응답 시간 제한 등). 클라이언트에서 생성할 수 있는 일부 오류 코드는 다음과 같습니다.
|
||||||||||||
kEvent_OnUpdateComplete
|
업데이트 완료를 나타내는 이벤트입니다. 이벤트 매개변수는 특정 특성 경로의 업데이트가 성공했는지 실패했는지를 나타냅니다. |
ResubscribePolicyCallback
void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
다음 정기 결제를 재신청하기 전에 대기하는 시간 간격을 가져오는 콜백입니다.
애플리케이션이 재구독을 포기하기로 결정한 경우 이 기능에서 애플리케이션이 취소되거나 해제될 수 있습니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
공개 정적 함수
DefaultEventHandler
void DefaultEventHandler( EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
DefaultResubscribePolicyCallback
void DefaultResubscribePolicyCallback( void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec )
기본 정책 구현에서는 피보나치 시퀀스에 따라 WDM_RESUBSCRIPTION_MAX_FIBONACCI_STEP_INDEX까지 계속 증가하는 기간 동안 밀리초 단위의 해상도를 사용하는 임의의 타임슬롯을 선택합니다.
WDM_RESUBSCRIPTION_MAX_FIBONACCI_STEP_INDEX 이후 무작위 대기 시간의 평균은 약 1시간입니다. 재시도 횟수가 0으로 재설정되면 시퀀스가 처음부터 다시 시작됩니다.
공개 함수
AbortSubscription
void AbortSubscription( void )
정기 결제를 취소합니다.
클라이언트 구독을 취소합니다.
정기 결제와 관련된 모든 트래픽 수락을 즉시 중지하고 모든 기본 커뮤니케이션 리소스를 해제합니다. SubscriptionClient 객체 자체는 유효한 상태로 유지되며 다시 사용될 수도 있습니다.
구독 게시자에게 알리거나 애플리케이션의 이벤트 핸들러에 OnSubscriptionTerminated
이벤트를 전달하지 않고 클라이언트 구독을 종료합니다. 상호 구독이 있는 경우 카운터 구독도 종료됩니다.
AbortSubscription()을 호출하면 SubscriptionClient
객체가 Terminated
상태로 전환됩니다. 종료 프로세스가 완료되면 객체가 Initialized
상태로 전환됩니다. 두 전환은 모두 AbortSubscription() 호출 내에서 동기식으로 발생합니다.
AbortSubscription()이 반환되면 SubscriptionClient
객체를 사용하여 다른 구독을 시작하거나 Free() 메서드를 호출하여 해제할 수 있습니다.
ClearUpdated
WEAVE_ERROR ClearUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle )
DisableResubscribe
void DisableResubscribe( void )
정기 결제 재신청 메커니즘을 사용 중지합니다.
재신청이 대기 중인 경우 취소됩니다.
DiscardUpdates
void DiscardUpdates()
업데이트 대기 중인 TraitPath 집합을 비우고 진행 중인 업데이트 요청(있는 경우)을 취소하도록 SubscriptionClient에 지시합니다.
이 메서드는 모든 콜백에서 호출할 수 있습니다.
EnableResubscribe
void EnableResubscribe( ResubscribePolicyCallback aCallback )
자동 정기 결제 재신청을 사용 설정합니다.
콜백을 연결하여 실패 시 다음 재시도 시간을 지정합니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
EndSubscription
WEAVE_ERROR EndSubscription( void )
구독을 종료합니다.
클라이언트 구독을 정상적으로 종료합니다.
WDM_ENABLE_SUBSCRIPTION_CANCEL 컴파일 시간 옵션이 사용 설정된 경우 피어에 CancelRequest를 전송하여 구독을 적절하게 종료합니다. 구독과 연결된 리소스는 피어의 응답 또는 제한 시간 시 해제됩니다. 이 옵션이 사용 중지되면 호출은 AbortSubscription()과 동일합니다.
클라이언트의 구독 종료를 단계적으로 적절하게 종료합니다. 구독 취소 지원이 사용 설정된 경우 구독 취소 요청 메시지가 구독 게시자에게 전송되고 시스템은 구독을 종료하기 전에 응답을 기다립니다. 그렇지 않으면 AbortSubscription()과 유사한 방식으로 구독이 즉시 종료됩니다. 상호 구독이 있으면 카운터 구독도 종료됩니다.
SubscriptionsCancelRequest의 응답을 기다리는 동안 SubscriptionClient
는 Canceling
상태가 됩니다.
종료 프로세스가 시작되면 SubscriptionClient
객체가 Terminated
상태로 전환되고 OnSubscriptionTerminated
이벤트가 애플리케이션의 이벤트 핸들러에 전달됩니다. 취소 지원이 사용 설정되지 않은 경우 EndSubscription() 호출 내에서 이벤트 핸들러가 동기식으로 호출될 수 있습니다.
애플리케이션의 이벤트 핸들러가 반환되면 SubscriptionClient
객체가 Initialized
상태로 전환됩니다. 이 시점에서 SubscriptionClient
객체를 다른 정기 결제를 시작하는 데 사용하거나 Free() 메서드를 호출하여 해제할 수 있습니다.
FlushUpdate
WEAVE_ERROR FlushUpdate()
애플리케이션에서 모든 TraitUpdatableDataSinks의 변형을 완료했음을 나타냅니다.
이전 업데이트 교환이 진행 중이 아니라면 클라이언트는 업데이트된 것으로 표시된 모든 데이터를 가져와 한 번의 업데이트 요청으로 응답자에게 전송합니다. 이 메서드는 어느 스레드에서나 호출할 수 있습니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
||
반환 |
성공한 경우 WEAVE_NO_ERROR, 실패할 경우 다른 WEAVE_ERROR 코드를 반환합니다.
|
FlushUpdate
WEAVE_ERROR FlushUpdate( bool aForce )
무료
void Free( void )
이 SubscriptionClient 객체를 해제합니다.
SubscriptionClient
객체를 해제합니다.
필요한 경우 AbortSubscription()을 호출하고 이 SubscriptionClient 객체에 대한 refcount를 해제합니다. 올바른 사용 시 객체를 객체 풀로 반환할 수 있습니다.
SubscriptionClient
객체를 해제합니다. 구독이 활성 상태이거나 진행 중인 경우 AbortSubscription()을 호출하는 것과 유사한 방식으로 구독이 즉시 종료됩니다. 진행 중인 업데이트 요청이 있으면 마찬가지로 취소됩니다.
애플리케이션은 SubscriptionClient
객체의 전체 기간 동안 정확히 한 번 Free()를 호출해야 합니다. Free()를 호출한 후에는 객체를 더 이상 참조해서는 안 됩니다.
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 )
SubscriptionClient를 카운터 구독자가 아닌 시작자로 구성하고, 시작자가 아닌 경우 구독을 불러옵니다.
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 )
ResetResubscribe
void ResetResubscribe( void )
정기 결제 재신청 메커니즘을 사용합니다.
이렇게 하면 즉시 재시도가 시작됩니다.
SetLivenessTimeoutMsec
void SetLivenessTimeoutMsec( uint32_t val )
SetUpdated
WEAVE_ERROR SetUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional )
SuspendUpdateRetries
void SuspendUpdateRetries()
SubscriptionClient에 업데이트 요청 재시도를 중지하도록 지시합니다.
애플리케이션이 모든 메타데이터를 삭제하지 않고 일정 기간 동안 업데이트를 정지할 수 있도록 허용합니다. FlushUpdate가 호출되면 업데이트 및 재시도가 재개됩니다. 업데이트 진행 중에 업데이트를 정지하기 위해 호출하면 업데이트가 취소되지 않지만, 업데이트 실패 시 FlushUpdate가 다시 호출될 때까지 재시도되지 않습니다.
UnlockUpdateMutex
void UnlockUpdateMutex( void )