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

#include <pubsubclientconnection.h>

Classes

class  IListener
 
struct  OutstandingRequest
 
struct  TopicSubscriptionState
 

Public Types

typedef std::function< void(TTV_ErrorCode ec, const std::string &error, const json::Value &result)> InternalCallback
 

Public Member Functions

 PubSubClientConnection (std::shared_ptr< User > user)
 
PubSubState GetState () const
 
TopicSubscriptionState::Enum GetTopicState (const std::string &topic) const
 
void AddListener (const std::shared_ptr< IListener > &listener)
 
void RemoveListener (const std::shared_ptr< IListener > &listener)
 
TTV_ErrorCode Connect ()
 
TTV_ErrorCode Disconnect ()
 
TTV_ErrorCode Send (const std::string &text)
 
bool Connected ()
 
TTV_ErrorCode Listen (const std::string &topic, std::shared_ptr< User > user)
 
TTV_ErrorCode Unlisten (const std::string &topic)
 
TTV_ErrorCode SendMessageOverSocket (const json::Value &root)
 
TTV_ErrorCode SendNullDataMessage (const std::string &type)
 
TTV_ErrorCode PollSocket ()
 
void Update ()
 
uint32_t GetConnectionIndex () const
 

Private Member Functions

TTV_ErrorCode HandleIncomingMessage ()
 
TTV_ErrorCode InitiatePing ()
 
void SetConnectionState (PubSubState state, TTV_ErrorCode ec)
 
void Log (TTV_MessageLevel level, const char *format,...)
 

Private Attributes

std::weak_ptr< UsermUser
 
std::shared_ptr< IWebSocketmSocket
 
std::string mReadBuffer
 
std::map< std::string, TopicSubscriptionState::EnummTopicStates
 
std::map< std::string, OutstandingRequestmOutstandingRequests
 
json::Reader mJsonReader
 
json::FastWriter mJsonWriter
 
WaitForExpiry mPingTimer
 
WaitForExpiry mPongTimer
 
PubSubState mState
 
EventSource< IListenermListeners
 
uint32_t mConnectionIndex
 

Detailed Description

A single use connection used by PubSubClient. Once it has made a connection attempt it should not be used again once disconnected. This is a single threaded component.

Member Typedef Documentation

◆ InternalCallback

typedef std::function<void(TTV_ErrorCode ec, const std::string& error, const json::Value& result)> ttv::PubSubClientConnection::InternalCallback

Constructor & Destructor Documentation

◆ PubSubClientConnection()

ttv::PubSubClientConnection::PubSubClientConnection ( std::shared_ptr< User user)

Member Function Documentation

◆ AddListener()

void ttv::PubSubClientConnection::AddListener ( const std::shared_ptr< IListener > &  listener)

◆ Connect()

TTV_ErrorCode ttv::PubSubClientConnection::Connect ( )

◆ Connected()

bool ttv::PubSubClientConnection::Connected ( )

◆ Disconnect()

TTV_ErrorCode ttv::PubSubClientConnection::Disconnect ( )

◆ GetConnectionIndex()

uint32_t ttv::PubSubClientConnection::GetConnectionIndex ( ) const
inline

◆ GetState()

PubSubState ttv::PubSubClientConnection::GetState ( ) const
inline

◆ GetTopicState()

TopicSubscriptionState::Enum ttv::PubSubClientConnection::GetTopicState ( const std::string &  topic) const

◆ HandleIncomingMessage()

TTV_ErrorCode ttv::PubSubClientConnection::HandleIncomingMessage ( )
private

◆ InitiatePing()

TTV_ErrorCode ttv::PubSubClientConnection::InitiatePing ( )
private

◆ Listen()

TTV_ErrorCode ttv::PubSubClientConnection::Listen ( const std::string &  topic,
std::shared_ptr< User user 
)

◆ Log()

void ttv::PubSubClientConnection::Log ( TTV_MessageLevel  level,
const char *  format,
  ... 
)
private

◆ PollSocket()

TTV_ErrorCode ttv::PubSubClientConnection::PollSocket ( )

◆ RemoveListener()

void ttv::PubSubClientConnection::RemoveListener ( const std::shared_ptr< IListener > &  listener)

◆ Send()

TTV_ErrorCode ttv::PubSubClientConnection::Send ( const std::string &  text)

◆ SendMessageOverSocket()

TTV_ErrorCode ttv::PubSubClientConnection::SendMessageOverSocket ( const json::Value root)

◆ SendNullDataMessage()

TTV_ErrorCode ttv::PubSubClientConnection::SendNullDataMessage ( const std::string &  type)

◆ SetConnectionState()

void ttv::PubSubClientConnection::SetConnectionState ( PubSubState  state,
TTV_ErrorCode  ec 
)
private

◆ Unlisten()

TTV_ErrorCode ttv::PubSubClientConnection::Unlisten ( const std::string &  topic)

◆ Update()

void ttv::PubSubClientConnection::Update ( )

Member Data Documentation

◆ mConnectionIndex

uint32_t ttv::PubSubClientConnection::mConnectionIndex
private

◆ mJsonReader

json::Reader ttv::PubSubClientConnection::mJsonReader
private

◆ mJsonWriter

json::FastWriter ttv::PubSubClientConnection::mJsonWriter
private

◆ mListeners

EventSource<IListener> ttv::PubSubClientConnection::mListeners
private

◆ mOutstandingRequests

std::map<std::string, OutstandingRequest> ttv::PubSubClientConnection::mOutstandingRequests
private

◆ mPingTimer

WaitForExpiry ttv::PubSubClientConnection::mPingTimer
private

◆ mPongTimer

WaitForExpiry ttv::PubSubClientConnection::mPongTimer
private

◆ mReadBuffer

std::string ttv::PubSubClientConnection::mReadBuffer
private

◆ mSocket

std::shared_ptr<IWebSocket> ttv::PubSubClientConnection::mSocket
private

◆ mState

PubSubState ttv::PubSubClientConnection::mState
private

◆ mTopicStates

std::map<std::string, TopicSubscriptionState::Enum> ttv::PubSubClientConnection::mTopicStates
private

◆ mUser

std::weak_ptr<User> ttv::PubSubClientConnection::mUser
private

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