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

#include <userrepository.h>

Inheritance diagram for ttv::UserRepository:
ttv::Component ttv::IComponent

Classes

struct  UserInfoLookupEntry
 

Public Types

using UserInfoLookupCallback = std::function< void(TTV_ErrorCode ec, const UserInfo &userInfo)>
 
enum  State { State::Uninitialized, State::Initialized, State::ShuttingDown, State::Inert }
 

Public Member Functions

 UserRepository ()
 
std::shared_ptr< UserGetAnonymousUser () const
 
std::shared_ptr< UserRegisterUser (UserId userId)
 
std::shared_ptr< UserGetUser (UserId userId)
 
TTV_ErrorCode GetUsers (std::vector< std::shared_ptr< User >> &users)
 
TTV_ErrorCode UnRegisterUser (UserId userId)
 
TTV_ErrorCode FetchUserInfoById (UserId userId, UserInfoLookupCallback callback)
 
TTV_ErrorCode FetchUserInfoByName (const std::string &username, UserInfoLookupCallback callback)
 
TTV_ErrorCode FetchUserInfoByAuthToken (const std::shared_ptr< OAuthToken > &authToken, UserInfoLookupCallback callback)
 
TTV_ErrorCode GetUserInfoById (UserId userId, UserInfo &result)
 
TTV_ErrorCode GetUserInfoByName (const std::string &username, UserInfo &result)
 
virtual TTV_ErrorCode Initialize () override
 
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
 

Protected Member Functions

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

ClientServerValue< StatemState
 
std::shared_ptr< TaskRunnermTaskRunner
 
std::vector< std::shared_ptr< Task > > mRunningTasks
 
std::mutex mTaskMutex
 
uint64_t mShutdownTimeMilliseconds
 

Private Member Functions

virtual bool CheckShutdown () override
 
virtual void CompleteShutdown () override
 
TTV_ErrorCode ScheduleUserInfoLookup ()
 
void CompleteUserInfoLookup (const UserInfo &userInfo, TTV_ErrorCode ec)
 
TTV_ErrorCode CacheUserInfo (const UserInfo &userInfo)
 

Private Attributes

std::map< UserId, std::shared_ptr< User > > mUsers
 
std::vector< std::shared_ptr< User > > mCleanupUsers
 The users that are shutting down. More...
 
std::map< UserId, UserInfomUserInfo
 A mapping of username to UserInfo. More...
 
std::vector< UserInfoLookupEntrymPendingUserInfoLookups
 
std::shared_ptr< UsermAnonymousUser
 
bool mLookupInProgress
 

Class Documentation

◆ ttv::UserRepository::UserInfoLookupEntry

struct ttv::UserRepository::UserInfoLookupEntry
Class Members
shared_ptr< OAuthToken > authToken
UserInfoLookupCallback callback
bool forceRefetch
shared_ptr< GetUserTask > task
UserId userId
string username

Member Typedef Documentation

◆ UserInfoLookupCallback

using ttv::UserRepository::UserInfoLookupCallback = std::function<void(TTV_ErrorCode ec, const UserInfo& userInfo)>

Member Enumeration Documentation

◆ State

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

The component doesn't require shutting down.

Constructor & Destructor Documentation

◆ UserRepository()

ttv::UserRepository::UserRepository ( )

Member Function Documentation

◆ CacheUserInfo()

TTV_ErrorCode ttv::UserRepository::CacheUserInfo ( const UserInfo userInfo)
private

◆ CheckShutdown()

virtual bool ttv::UserRepository::CheckShutdown ( )
overrideprivatevirtual

Reimplemented from ttv::Component.

◆ CompleteShutdown()

virtual void ttv::UserRepository::CompleteShutdown ( )
overrideprivatevirtual

Reimplemented from ttv::Component.

◆ CompleteTask()

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

◆ CompleteUserInfoLookup()

void ttv::UserRepository::CompleteUserInfoLookup ( const UserInfo userInfo,
TTV_ErrorCode  ec 
)
private

◆ FetchUserInfoByAuthToken()

TTV_ErrorCode ttv::UserRepository::FetchUserInfoByAuthToken ( const std::shared_ptr< OAuthToken > &  authToken,
UserInfoLookupCallback  callback 
)

Fetches user's own info using an auth token.

◆ FetchUserInfoById()

TTV_ErrorCode ttv::UserRepository::FetchUserInfoById ( UserId  userId,
UserInfoLookupCallback  callback 
)

Fetches user info by id.

◆ FetchUserInfoByName()

TTV_ErrorCode ttv::UserRepository::FetchUserInfoByName ( const std::string &  username,
UserInfoLookupCallback  callback 
)

Fetches user info by name.

◆ GetAnonymousUser()

std::shared_ptr<User> ttv::UserRepository::GetAnonymousUser ( ) const
inline

Returns the anonymous user for the system.

◆ GetLoggerName()

virtual std::string ttv::UserRepository::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::UserRepository::GetUser ( UserId  userId)

Returns the existing user if registered. This will NOT return the anonymous user.

◆ GetUserInfoById()

TTV_ErrorCode ttv::UserRepository::GetUserInfoById ( UserId  userId,
UserInfo result 
)

Returns cached user info matching the passed user id or TTV_EC_USERINFO_NOT_AVAILABLE if not yet fetched. This will NOT return info for the anonymous user.

◆ GetUserInfoByName()

TTV_ErrorCode ttv::UserRepository::GetUserInfoByName ( const std::string &  username,
UserInfo result 
)

Returns cached user info matching the passed username or TTV_EC_USERINFO_NOT_AVAILABLE if not yet fetched. This will NOT return info for the anonymous user.

◆ GetUsers()

TTV_ErrorCode ttv::UserRepository::GetUsers ( std::vector< std::shared_ptr< User >> &  users)

Fetches all active users. This does NOT include the anonymous user.

◆ Initialize()

virtual TTV_ErrorCode ttv::UserRepository::Initialize ( )
overridevirtual

Reimplemented from ttv::Component.

◆ IsTaskRunning()

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

◆ RegisterUser()

std::shared_ptr<User> ttv::UserRepository::RegisterUser ( UserId  userId)

Returns the existing user or creates a new one if not already registered.

◆ ScheduleUserInfoLookup()

TTV_ErrorCode ttv::UserRepository::ScheduleUserInfoLookup ( )
private

◆ SetClientState()

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

◆ SetServerState()

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

◆ SetState()

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

◆ SetTaskRunner()

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

◆ Shutdown()

virtual TTV_ErrorCode ttv::UserRepository::Shutdown ( )
overridevirtual

Reimplemented from ttv::Component.

◆ StartTask()

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

◆ UnRegisterUser()

TTV_ErrorCode ttv::UserRepository::UnRegisterUser ( UserId  userId)

Removes the user from the registry.

◆ Update()

virtual void ttv::UserRepository::Update ( )
overridevirtual

Reimplemented from ttv::Component.

Member Data Documentation

◆ mAnonymousUser

std::shared_ptr<User> ttv::UserRepository::mAnonymousUser
private

◆ mCleanupUsers

std::vector<std::shared_ptr<User> > ttv::UserRepository::mCleanupUsers
private

The users that are shutting down.

◆ mLookupInProgress

bool ttv::UserRepository::mLookupInProgress
private

◆ mPendingUserInfoLookups

std::vector<UserInfoLookupEntry> ttv::UserRepository::mPendingUserInfoLookups
private

◆ mRunningTasks

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

◆ mShutdownTimeMilliseconds

uint64_t ttv::Component::mShutdownTimeMilliseconds
protectedinherited

◆ mState

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

◆ mTaskMutex

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

◆ mTaskRunner

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

◆ mUserInfo

std::map<UserId, UserInfo> ttv::UserRepository::mUserInfo
private

A mapping of username to UserInfo.

◆ mUsers

std::map<UserId, std::shared_ptr<User> > ttv::UserRepository::mUsers
private

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