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

#include <ingesttester.h>

Inheritance diagram for ttv::broadcast::IngestTester:
ttv::UserComponent ttv::broadcast::IIngestTester ttv::Component ttv::IComponent

Public Types

using DisposerFunc = std::function< void()>
 
enum  State { State::Uninitialized, State::Initialized, State::ShuttingDown, State::Inert }
 
enum  TestState {
  TestState::Stopped, TestState::Connecting, TestState::Testing, TestState::Disconnecting,
  TestState::Finished, TestState::Failed
}
 

Public Member Functions

 IngestTester (const std::shared_ptr< User > &user, const std::shared_ptr< StreamerContext > &streamerContext)
 
virtual ~IngestTester ()
 
void SetDisposer (DisposerFunc &&func)
 
TTV_ErrorCode Dispose ()
 
void AddListener (const std::shared_ptr< IIngestTesterListener > &listener)
 
void RemoveListener (const std::shared_ptr< IIngestTesterListener > &listener)
 
TTV_ErrorCode SetTestData (const uint8_t *buffer, uint32_t length)
 
virtual TTV_ErrorCode GetTestState (TestState &result) const override
 
virtual TTV_ErrorCode GetIngestServer (IngestServer &result) const override
 
virtual TTV_ErrorCode Start (const IngestServer &ingestServer) override
 
virtual TTV_ErrorCode Cancel () override
 
virtual TTV_ErrorCode GetMeasuredKbps (uint32_t &result) override
 
virtual TTV_ErrorCode GetTestError (TTV_ErrorCode &result) override
 
virtual TTV_ErrorCode SetTestDurationMilliseconds (uint64_t duration) override
 
virtual TTV_ErrorCode GetTestDurationMilliseconds (uint64_t &result) const override
 
virtual TTV_ErrorCode GetProgress (float &result) const override
 
virtual TTV_ErrorCode GetUserId (UserId &result) const override
 
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

virtual bool CheckShutdown () override
 
virtual void CompleteShutdown () override
 
virtual void OnUserLogInComplete (TTV_ErrorCode ec)
 
virtual void OnUserLogOutComplete (TTV_ErrorCode ec)
 
virtual void OnUserInfoFetchComplete (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

bool IsDone () const
 
void SetTestState (TestState state)
 
TTV_ErrorCode StartServerTest ()
 
void UpdateServerTest ()
 
void StopServerTest ()
 
void UpdateProgress ()
 
void OnStreamerStarted ()
 
void OnStreamerStopped ()
 

Private Attributes

EventSource< IIngestTesterListenermListeners
 
std::shared_ptr< StreamermStreamer
 
std::shared_ptr< StreamerListenerProxymStreamerListener
 
std::shared_ptr< StreamStatsListenerProxymStatsListener
 
std::shared_ptr< IVideoEncodermVideoEncoder
 
std::shared_ptr< SampleDataVideoCapturer > mVideoCapturer
 
std::shared_ptr< StreamerContextmStreamerContext
 
IngestServer mIngestServer
 
uint32_t mMeasuredKbps
 
TTV_ErrorCode mTestErrorCode
 
std::shared_ptr< IngestSampleDatamSampleData
 
std::shared_ptr< ComponentContainermComponentContainer
 
TestState mTestState
 
uint64_t mTestDurationMilliseconds
 
uint64_t mStartingBytesSent
 
uint64_t mTotalBytesSent
 
uint64_t mTotalVideoPacketsSent
 
WaitForExpiry mServerTestTimer
 
VideoParams mVideoParams
 
DisposerFunc mDisposerFunc
 
float mProgress
 
bool mBroadcasting
 
bool mWaitingForStartCallback
 
bool mWaitingForStopCallback
 

Detailed Description

Concrete implementation of IIngestTester.

The following properties must be set before calling Initialize().

Member Typedef Documentation

◆ DisposerFunc

using ttv::broadcast::IngestTester::DisposerFunc = std::function<void()>

Member Enumeration Documentation

◆ State

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

The component doesn't require shutting down.

◆ TestState

Enumerator
Stopped 
Connecting 
Testing 
Disconnecting 
Finished 
Failed 

Constructor & Destructor Documentation

◆ IngestTester()

ttv::broadcast::IngestTester::IngestTester ( const std::shared_ptr< User > &  user,
const std::shared_ptr< StreamerContext > &  streamerContext 
)

◆ ~IngestTester()

virtual ttv::broadcast::IngestTester::~IngestTester ( )
virtual

Member Function Documentation

◆ AddListener()

void ttv::broadcast::IngestTester::AddListener ( const std::shared_ptr< IIngestTesterListener > &  listener)

◆ Cancel()

virtual TTV_ErrorCode ttv::broadcast::IngestTester::Cancel ( )
overridevirtual

Stop testing the current server and abort the rest of the test. This will cause the test to fail with error TTV_EC_REQUEST_ABORTED.

Implements ttv::broadcast::IIngestTester.

◆ CheckShutdown()

virtual bool ttv::broadcast::IngestTester::CheckShutdown ( )
overrideprotectedvirtual

Reimplemented from ttv::Component.

◆ CompleteShutdown()

virtual void ttv::broadcast::IngestTester::CompleteShutdown ( )
overrideprotectedvirtual

Reimplemented from ttv::UserComponent.

◆ CompleteTask()

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

◆ Dispose()

TTV_ErrorCode ttv::broadcast::IngestTester::Dispose ( )

◆ GetIngestServer()

virtual TTV_ErrorCode ttv::broadcast::IngestTester::GetIngestServer ( IngestServer result) const
overridevirtual

Returns the ingest server currently being tested. If there is no server then TTV_EC_INVALID_STATE will be returned.

Implements ttv::broadcast::IIngestTester.

◆ GetLoggerName()

virtual std::string ttv::broadcast::IngestTester::GetLoggerName ( ) const
overridevirtual

Implements ttv::Component.

◆ GetMeasuredKbps()

virtual TTV_ErrorCode ttv::broadcast::IngestTester::GetMeasuredKbps ( uint32_t &  result)
overridevirtual

Retrieves the computed kilobits (1000 bits) per second of the connection to the ingest server.

Implements ttv::broadcast::IIngestTester.

◆ GetProgress()

virtual TTV_ErrorCode ttv::broadcast::IngestTester::GetProgress ( float &  result) const
overridevirtual

The overall progress between [0,1].

Implements ttv::broadcast::IIngestTester.

◆ GetState()

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

Implements ttv::IComponent.

◆ GetTaskRunner()

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

◆ GetTestDurationMilliseconds()

virtual TTV_ErrorCode ttv::broadcast::IngestTester::GetTestDurationMilliseconds ( uint64_t &  result) const
overridevirtual

Gets the number of milliseconds in which to test each server.

Implements ttv::broadcast::IIngestTester.

◆ GetTestError()

virtual TTV_ErrorCode ttv::broadcast::IngestTester::GetTestError ( TTV_ErrorCode result)
overridevirtual

Retrives the error associated with the test, if available.

Implements ttv::broadcast::IIngestTester.

◆ GetTestState()

virtual TTV_ErrorCode ttv::broadcast::IngestTester::GetTestState ( TestState result) const
overridevirtual

Retrieves the current state of the test.

Implements ttv::broadcast::IIngestTester.

◆ GetUserId()

virtual TTV_ErrorCode ttv::broadcast::IngestTester::GetUserId ( UserId result) const
overridevirtual

The owning user id.

Implements ttv::broadcast::IIngestTester.

◆ Initialize()

virtual TTV_ErrorCode ttv::broadcast::IngestTester::Initialize ( )
overridevirtual

Reimplemented from ttv::UserComponent.

◆ IsDone()

bool ttv::broadcast::IngestTester::IsDone ( ) const
private

◆ IsTaskRunning()

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

◆ Log()

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

◆ OnStreamerStarted()

void ttv::broadcast::IngestTester::OnStreamerStarted ( )
private

◆ OnStreamerStopped()

void ttv::broadcast::IngestTester::OnStreamerStopped ( )
private

◆ OnUserAuthenticationIssue()

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

◆ OnUserInfoFetchComplete()

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

◆ OnUserLogInComplete()

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

◆ OnUserLogOutComplete()

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

◆ RemoveListener()

void ttv::broadcast::IngestTester::RemoveListener ( const std::shared_ptr< IIngestTesterListener > &  listener)

◆ SetClientState()

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

◆ SetDisposer()

void ttv::broadcast::IngestTester::SetDisposer ( DisposerFunc &&  func)
inline

◆ 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

◆ SetTestData()

TTV_ErrorCode ttv::broadcast::IngestTester::SetTestData ( const uint8_t *  buffer,
uint32_t  length 
)

◆ SetTestDurationMilliseconds()

virtual TTV_ErrorCode ttv::broadcast::IngestTester::SetTestDurationMilliseconds ( uint64_t  duration)
overridevirtual

Sets the number of milliseconds in which to test each server.

Implements ttv::broadcast::IIngestTester.

◆ SetTestState()

void ttv::broadcast::IngestTester::SetTestState ( TestState  state)
private

◆ Shutdown()

virtual TTV_ErrorCode ttv::broadcast::IngestTester::Shutdown ( )
overridevirtual

Reimplemented from ttv::Component.

◆ Start()

virtual TTV_ErrorCode ttv::broadcast::IngestTester::Start ( const IngestServer ingestServer)
overridevirtual

Start the testing the given server.

Implements ttv::broadcast::IIngestTester.

◆ StartServerTest()

TTV_ErrorCode ttv::broadcast::IngestTester::StartServerTest ( )
private

◆ StartTask()

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

◆ StopServerTest()

void ttv::broadcast::IngestTester::StopServerTest ( )
private

◆ Update()

virtual void ttv::broadcast::IngestTester::Update ( )
overridevirtual

Reimplemented from ttv::Component.

◆ UpdateProgress()

void ttv::broadcast::IngestTester::UpdateProgress ( )
private

◆ UpdateServerTest()

void ttv::broadcast::IngestTester::UpdateServerTest ( )
private

Member Data Documentation

◆ mBroadcasting

bool ttv::broadcast::IngestTester::mBroadcasting
private

◆ mComponentContainer

std::shared_ptr<ComponentContainer> ttv::broadcast::IngestTester::mComponentContainer
private

◆ mDisposerFunc

DisposerFunc ttv::broadcast::IngestTester::mDisposerFunc
private

◆ mIngestServer

IngestServer ttv::broadcast::IngestTester::mIngestServer
private

◆ mListeners

EventSource<IIngestTesterListener> ttv::broadcast::IngestTester::mListeners
private

◆ mMeasuredKbps

uint32_t ttv::broadcast::IngestTester::mMeasuredKbps
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.

◆ mProgress

float ttv::broadcast::IngestTester::mProgress
private

◆ mRunningTasks

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

◆ mSampleData

std::shared_ptr<IngestSampleData> ttv::broadcast::IngestTester::mSampleData
private

◆ mServerTestTimer

WaitForExpiry ttv::broadcast::IngestTester::mServerTestTimer
private

◆ mShutdownTimeMilliseconds

uint64_t ttv::Component::mShutdownTimeMilliseconds
protectedinherited

◆ mStartingBytesSent

uint64_t ttv::broadcast::IngestTester::mStartingBytesSent
private

◆ mState

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

◆ mStatsListener

std::shared_ptr<StreamStatsListenerProxy> ttv::broadcast::IngestTester::mStatsListener
private

◆ mStreamer

std::shared_ptr<Streamer> ttv::broadcast::IngestTester::mStreamer
private

◆ mStreamerContext

std::shared_ptr<StreamerContext> ttv::broadcast::IngestTester::mStreamerContext
private

◆ mStreamerListener

std::shared_ptr<StreamerListenerProxy> ttv::broadcast::IngestTester::mStreamerListener
private

◆ mTaskMutex

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

◆ mTaskRunner

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

◆ mTestDurationMilliseconds

uint64_t ttv::broadcast::IngestTester::mTestDurationMilliseconds
private

◆ mTestErrorCode

TTV_ErrorCode ttv::broadcast::IngestTester::mTestErrorCode
private

◆ mTestState

TestState ttv::broadcast::IngestTester::mTestState
private

◆ mTotalBytesSent

uint64_t ttv::broadcast::IngestTester::mTotalBytesSent
private

◆ mTotalVideoPacketsSent

uint64_t ttv::broadcast::IngestTester::mTotalVideoPacketsSent
private

◆ mUser

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

◆ mVideoCapturer

std::shared_ptr<SampleDataVideoCapturer> ttv::broadcast::IngestTester::mVideoCapturer
private

◆ mVideoEncoder

std::shared_ptr<IVideoEncoder> ttv::broadcast::IngestTester::mVideoEncoder
private

◆ mVideoParams

VideoParams ttv::broadcast::IngestTester::mVideoParams
private

◆ mWaitingForStartCallback

bool ttv::broadcast::IngestTester::mWaitingForStartCallback
private

◆ mWaitingForStopCallback

bool ttv::broadcast::IngestTester::mWaitingForStopCallback
private

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