Twitch SDK (Internal)
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
ttv::social::Presence Class Reference

#include <presence.h>

Inheritance diagram for ttv::social::Presence:
ttv::UserComponent ttv::Component ttv::IComponent

Classes

class  IListener
 
class  PubSubTopicListener
 

Public Types

using PostPresenceCallback = std::function< void(TTV_ErrorCode ec)>
 
using FetchPresenceSettingsCallback = std::function< void(TTV_ErrorCode ec, const PresenceSettings &settings)>
 
using SetPresenceSettingsCallback = std::function< void(TTV_ErrorCode ec)>
 
enum  State { State::Uninitialized, State::Initialized, State::ShuttingDown, State::Inert }
 

Public Member Functions

 Presence (std::shared_ptr< User > user)
 
virtual ~Presence ()
 
void SetUserRepository (std::shared_ptr< UserRepository > repository)
 
std::shared_ptr< UserGetUser ()
 
void AddListener (std::shared_ptr< IListener > listener)
 
void RemoveListener (std::shared_ptr< IListener > listener)
 
virtual TTV_ErrorCode Initialize () override
 
TTV_ErrorCode PostPresence (const PostPresenceCallback &callback)
 
TTV_ErrorCode SetSessionAvailability (PresenceSessionAvailability availability)
 
TTV_ErrorCode AddWatchingActivity (ChannelId channelId, PresenceActivityToken &activityToken)
 
TTV_ErrorCode AddPlayingActivity (GameId gameId, const std::string &gameDisplayContext, PresenceActivityToken &activityToken)
 
TTV_ErrorCode RemoveActivity (PresenceActivityToken activityToken)
 
TTV_ErrorCode SetPresenceSettings (const PresenceSettings &settings, const SetPresenceSettingsCallback &callback)
 
TTV_ErrorCode FetchSettings (const FetchPresenceSettingsCallback &callback)
 
TTV_ErrorCode SetAutomaticPresencePostingEnabled (bool enabled)
 
TTV_ErrorCode GetAutomaticPresencePostingEnabled (bool &enabled)
 
virtual void Update () override
 
virtual TTV_ErrorCode Shutdown () override
 
virtual std::string GetLoggerName () const override
 
virtual void SetTaskRunner (std::shared_ptr< TaskRunner > taskRunner)
 
std::shared_ptr< TaskRunnerGetTaskRunner ()
 
virtual State GetState () const override
 

Static Public Member Functions

static std::string GetComponentName ()
 

Protected Member Functions

virtual bool CheckShutdown () override
 
virtual void CompleteShutdown () override
 
virtual void OnUserLogInComplete (TTV_ErrorCode ec)
 
virtual void OnUserLogOutComplete (TTV_ErrorCode ec)
 
virtual void OnUserAuthenticationIssue (std::shared_ptr< const OAuthToken > oauthToken, TTV_ErrorCode ec)
 
void Log (TTV_MessageLevel level, const char *format,...)
 
TTV_ErrorCode StartTask (std::shared_ptr< Task > task)
 
void CompleteTask (Task *task)
 
bool IsTaskRunning (Task *task) const
 
virtual void SetState (State state)
 
virtual void SetClientState (State state)
 
virtual void SetServerState (State state)
 

Protected Attributes

std::weak_ptr< UsermUser
 
bool mOAuthIssue
 Whether or not the internal updates of the component are on hold because of an issue with the OAuth token. More...
 
ClientServerValue< StatemState
 
std::shared_ptr< TaskRunnermTaskRunner
 
std::vector< std::shared_ptr< Task > > mRunningTasks
 
std::mutex mTaskMutex
 
uint64_t mShutdownTimeMilliseconds
 

Private Member Functions

void OnTopicSubscribeStateChanged (const std::string &topic, PubSubClient::SubscribeState::Enum state, TTV_ErrorCode ec)
 
void OnTopicMessageReceived (const std::string &topic, const json::Value &msg)
 
void OnTopicListenerRemoved (const std::string &topic, TTV_ErrorCode ec)
 
virtual void OnUserInfoFetchComplete (TTV_ErrorCode ec) override
 
TTV_ErrorCode SubscribeTopics ()
 
TTV_ErrorCode UpdateSettings ()
 
void SetSettings (const PresenceSettings &settings)
 
void PresenceChanged ()
 
uint32_t InsertActivity (std::unique_ptr< PresenceActivity > &&activity)
 

Private Attributes

std::shared_ptr< UserRepositorymUserRepository
 
std::shared_ptr< PubSubClientmPubSub
 
std::shared_ptr< PubSubTopicListenermPubSubTopicListener
 
std::shared_ptr< PubSubTopicListenerHelpermPubSubTopicListenerHelper
 
std::shared_ptr< TaskmSocialSettingsTask
 
std::shared_ptr< TaskmSocialPostPresenceTask
 
EventSource< IListenermListeners
 
WaitForExpiry mPresencePostTimer
 
WaitForExpiry mSettingsFetchTimer
 
uint64_t mPostIntervalMilliseconds
 
std::map< PresenceActivityToken, std::unique_ptr< PresenceActivity > > mActivities
 
std::string mSessionGuid
 
std::string mPresenceTopic
 
PresenceActivityToken mActivityTokenCounter
 
std::unique_ptr< PresenceSettingsmSettings
 
CallbackQueue< FetchPresenceSettingsCallbackmFetchSettingsCallbacks
 
PresenceSessionAvailability mAvailability
 
bool mEnableAutomaticPosting
 

Detailed Description

Manages a local user's presence state.

Member Typedef Documentation

◆ FetchPresenceSettingsCallback

◆ PostPresenceCallback

◆ SetPresenceSettingsCallback

Member Enumeration Documentation

◆ State

enum ttv::IComponent::State
stronginherited
Enumerator
Uninitialized 
Initialized 
ShuttingDown 
Inert 

The component doesn't require shutting down.

Constructor & Destructor Documentation

◆ Presence()

ttv::social::Presence::Presence ( std::shared_ptr< User user)

◆ ~Presence()

virtual ttv::social::Presence::~Presence ( )
virtual

Member Function Documentation

◆ AddListener()

void ttv::social::Presence::AddListener ( std::shared_ptr< IListener listener)

◆ AddPlayingActivity()

TTV_ErrorCode ttv::social::Presence::AddPlayingActivity ( GameId  gameId,
const std::string &  gameDisplayContext,
PresenceActivityToken activityToken 
)

◆ AddWatchingActivity()

TTV_ErrorCode ttv::social::Presence::AddWatchingActivity ( ChannelId  channelId,
PresenceActivityToken activityToken 
)

◆ CheckShutdown()

virtual bool ttv::social::Presence::CheckShutdown ( )
overrideprotectedvirtual

Reimplemented from ttv::Component.

◆ CompleteShutdown()

virtual void ttv::social::Presence::CompleteShutdown ( )
overrideprotectedvirtual

Reimplemented from ttv::UserComponent.

◆ CompleteTask()

void ttv::Component::CompleteTask ( Task task)
protectedinherited

◆ FetchSettings()

TTV_ErrorCode ttv::social::Presence::FetchSettings ( const FetchPresenceSettingsCallback callback)

◆ GetAutomaticPresencePostingEnabled()

TTV_ErrorCode ttv::social::Presence::GetAutomaticPresencePostingEnabled ( bool &  enabled)

◆ GetComponentName()

static std::string ttv::social::Presence::GetComponentName ( )
inlinestatic

◆ GetLoggerName()

virtual std::string ttv::social::Presence::GetLoggerName ( ) const
overridevirtual

Implements ttv::Component.

◆ GetState()

virtual State ttv::Component::GetState ( ) const
overridevirtualinherited

Implements ttv::IComponent.

◆ GetTaskRunner()

std::shared_ptr<TaskRunner> ttv::Component::GetTaskRunner ( )
inlineinherited

◆ GetUser()

std::shared_ptr<User> ttv::social::Presence::GetUser ( )
inline

◆ Initialize()

virtual TTV_ErrorCode ttv::social::Presence::Initialize ( )
overridevirtual

Reimplemented from ttv::UserComponent.

◆ InsertActivity()

uint32_t ttv::social::Presence::InsertActivity ( std::unique_ptr< PresenceActivity > &&  activity)
private

◆ IsTaskRunning()

bool ttv::Component::IsTaskRunning ( Task task) const
protectedinherited

◆ Log()

void ttv::UserComponent::Log ( TTV_MessageLevel  level,
const char *  format,
  ... 
)
protectedinherited

◆ OnTopicListenerRemoved()

void ttv::social::Presence::OnTopicListenerRemoved ( const std::string &  topic,
TTV_ErrorCode  ec 
)
private

◆ OnTopicMessageReceived()

void ttv::social::Presence::OnTopicMessageReceived ( const std::string &  topic,
const json::Value msg 
)
private

◆ OnTopicSubscribeStateChanged()

void ttv::social::Presence::OnTopicSubscribeStateChanged ( const std::string &  topic,
PubSubClient::SubscribeState::Enum  state,
TTV_ErrorCode  ec 
)
private

◆ OnUserAuthenticationIssue()

virtual void ttv::UserComponent::OnUserAuthenticationIssue ( std::shared_ptr< const OAuthToken oauthToken,
TTV_ErrorCode  ec 
)
protectedvirtualinherited

◆ OnUserInfoFetchComplete()

virtual void ttv::social::Presence::OnUserInfoFetchComplete ( TTV_ErrorCode  ec)
overrideprivatevirtual

Reimplemented from ttv::UserComponent.

◆ OnUserLogInComplete()

virtual void ttv::UserComponent::OnUserLogInComplete ( TTV_ErrorCode  ec)
protectedvirtualinherited

◆ OnUserLogOutComplete()

virtual void ttv::UserComponent::OnUserLogOutComplete ( TTV_ErrorCode  ec)
protectedvirtualinherited

◆ PostPresence()

TTV_ErrorCode ttv::social::Presence::PostPresence ( const PostPresenceCallback callback)

◆ PresenceChanged()

void ttv::social::Presence::PresenceChanged ( )
private

◆ RemoveActivity()

TTV_ErrorCode ttv::social::Presence::RemoveActivity ( PresenceActivityToken  activityToken)

◆ RemoveListener()

void ttv::social::Presence::RemoveListener ( std::shared_ptr< IListener listener)

◆ SetAutomaticPresencePostingEnabled()

TTV_ErrorCode ttv::social::Presence::SetAutomaticPresencePostingEnabled ( bool  enabled)

◆ SetClientState()

virtual void ttv::Component::SetClientState ( State  state)
protectedvirtualinherited

◆ SetPresenceSettings()

TTV_ErrorCode ttv::social::Presence::SetPresenceSettings ( const PresenceSettings settings,
const SetPresenceSettingsCallback callback 
)

◆ SetServerState()

virtual void ttv::Component::SetServerState ( State  state)
protectedvirtualinherited

◆ SetSessionAvailability()

TTV_ErrorCode ttv::social::Presence::SetSessionAvailability ( PresenceSessionAvailability  availability)

◆ SetSettings()

void ttv::social::Presence::SetSettings ( const PresenceSettings settings)
private

◆ SetState()

virtual void ttv::Component::SetState ( State  state)
protectedvirtualinherited

◆ SetTaskRunner()

virtual void ttv::Component::SetTaskRunner ( std::shared_ptr< TaskRunner taskRunner)
virtualinherited

◆ SetUserRepository()

void ttv::social::Presence::SetUserRepository ( std::shared_ptr< UserRepository repository)
inline

◆ Shutdown()

virtual TTV_ErrorCode ttv::social::Presence::Shutdown ( )
overridevirtual

Reimplemented from ttv::Component.

◆ StartTask()

TTV_ErrorCode ttv::Component::StartTask ( std::shared_ptr< Task task)
protectedinherited

◆ SubscribeTopics()

TTV_ErrorCode ttv::social::Presence::SubscribeTopics ( )
private

◆ Update()

virtual void ttv::social::Presence::Update ( )
overridevirtual

Reimplemented from ttv::Component.

◆ UpdateSettings()

TTV_ErrorCode ttv::social::Presence::UpdateSettings ( )
private

Member Data Documentation

◆ mActivities

std::map<PresenceActivityToken, std::unique_ptr<PresenceActivity> > ttv::social::Presence::mActivities
private

◆ mActivityTokenCounter

PresenceActivityToken ttv::social::Presence::mActivityTokenCounter
private

◆ mAvailability

PresenceSessionAvailability ttv::social::Presence::mAvailability
private

◆ mEnableAutomaticPosting

bool ttv::social::Presence::mEnableAutomaticPosting
private

◆ mFetchSettingsCallbacks

CallbackQueue<FetchPresenceSettingsCallback> ttv::social::Presence::mFetchSettingsCallbacks
private

◆ mListeners

EventSource<IListener> ttv::social::Presence::mListeners
private

◆ mOAuthIssue

bool ttv::UserComponent::mOAuthIssue
protectedinherited

Whether or not the internal updates of the component are on hold because of an issue with the OAuth token.

◆ mPostIntervalMilliseconds

uint64_t ttv::social::Presence::mPostIntervalMilliseconds
private

◆ mPresencePostTimer

WaitForExpiry ttv::social::Presence::mPresencePostTimer
private

◆ mPresenceTopic

std::string ttv::social::Presence::mPresenceTopic
private

◆ mPubSub

std::shared_ptr<PubSubClient> ttv::social::Presence::mPubSub
private

◆ mPubSubTopicListener

std::shared_ptr<PubSubTopicListener> ttv::social::Presence::mPubSubTopicListener
private

◆ mPubSubTopicListenerHelper

std::shared_ptr<PubSubTopicListenerHelper> ttv::social::Presence::mPubSubTopicListenerHelper
private

◆ mRunningTasks

std::vector<std::shared_ptr<Task> > ttv::Component::mRunningTasks
protectedinherited

◆ mSessionGuid

std::string ttv::social::Presence::mSessionGuid
private

◆ mSettings

std::unique_ptr<PresenceSettings> ttv::social::Presence::mSettings
private

◆ mSettingsFetchTimer

WaitForExpiry ttv::social::Presence::mSettingsFetchTimer
private

◆ mShutdownTimeMilliseconds

uint64_t ttv::Component::mShutdownTimeMilliseconds
protectedinherited

◆ mSocialPostPresenceTask

std::shared_ptr<Task> ttv::social::Presence::mSocialPostPresenceTask
private

◆ mSocialSettingsTask

std::shared_ptr<Task> ttv::social::Presence::mSocialSettingsTask
private

◆ mState

ClientServerValue<State> ttv::Component::mState
protectedinherited

◆ mTaskMutex

std::mutex ttv::Component::mTaskMutex
mutableprotectedinherited

◆ mTaskRunner

std::shared_ptr<TaskRunner> ttv::Component::mTaskRunner
protectedinherited

◆ mUser

std::weak_ptr<User> ttv::UserComponent::mUser
protectedinherited

◆ mUserRepository

std::shared_ptr<UserRepository> ttv::social::Presence::mUserRepository
private

The documentation for this class was generated from the following file: