12 #include <QJsonObject> 14 #include <pajlada/signals/signal.hpp> 15 #include <websocketpp/client.hpp> 22 #include <unordered_map> 29 using WebsocketMessagePtr =
30 websocketpp::config::asio_tls_client::message_type::ptr;
31 using WebsocketContextPtr =
32 websocketpp::lib::shared_ptr<boost::asio::ssl::context>;
36 pajlada::Signals::Signal<T>;
39 std::weak_ptr<PubSubClient> client;
41 std::vector<QString> topics;
42 std::vector<QString>::size_type topicCount;
46 std::unique_ptr<std::thread> mainThread;
57 PubSub(
const QString &host,
58 std::chrono::seconds pingInterval = std::chrono::seconds(15));
62 this->token_ = account->getOAuthToken();
63 this->userID_ = account->getUserId();
69 this->userID_ = userID;
99 pajlada::Signals::Signal<PubSubAutoModQueueMessage, QString>
113 Signal<const PubSubWhisperMessage &>
sent;
150 bool isListeningToTopic(
const QString &topic);
153 std::atomic<bool> addingClient{
false};
158 std::map<WebsocketHandle, std::shared_ptr<PubSubClient>,
159 std::owner_less<WebsocketHandle>>
163 QString, std::function<void(const QJsonObject &, const QString &)>>
164 moderationActionHandlers;
167 QString, std::function<void(const QJsonObject &, const QString &)>>
168 channelTermsActionHandlers;
170 void onMessage(websocketpp::connection_hdl hdl, WebsocketMessagePtr msg);
171 void onConnectionOpen(websocketpp::connection_hdl hdl);
172 void onConnectionFail(websocketpp::connection_hdl hdl);
173 void onConnectionClose(websocketpp::connection_hdl hdl);
174 WebsocketContextPtr onTLSInit(websocketpp::connection_hdl hdl);
177 void handleListenResponse(
const NonceInfo &info,
bool failed);
178 void handleUnlistenResponse(
const NonceInfo &info,
bool failed);
182 void registerNonce(QString nonce, NonceInfo nonceInfo);
185 boost::optional<NonceInfo> findNonceInfo(QString nonce);
187 std::unordered_map<QString, NonceInfo> nonces_;
191 std::shared_ptr<boost::asio::io_service::work> work{
nullptr};
196 bool stopping_{
false};
websocketpp::client< chatterinoconfig > WebsocketClient
Definition: PubSubWebsocket.hpp:28
std::atomic< uint32_t > connectionsOpened
Definition: PubSubManager.hpp:135
struct chatterino::PubSub::@6::@8 moderation
Signal< ModerationStateAction > moderationStateChanged
Definition: PubSubManager.hpp:92
std::vector< QString > requests
Definition: PubSubManager.hpp:131
std::atomic< uint32_t > messagesFailedToParse
Definition: PubSubManager.hpp:138
std::atomic< uint32_t > failedListenResponses
Definition: PubSubManager.hpp:139
void stop()
Definition: PubSubManager.cpp:512
struct chatterino::PubSub::@6::@9 whisper
void listenToTopic(const QString &topic)
Definition: PubSubManager.cpp:1167
Definition: Message.hpp:13
void setAccount(std::shared_ptr< TwitchAccount > account)
Definition: PubSubManager.hpp:60
Signal< BanAction > userBanned
Definition: PubSubManager.hpp:94
bool isConnected() const
Definition: PubSubManager.hpp:82
Definition: Application.cpp:48
Signal< const PubSubWhisperMessage & > sent
Definition: PubSubManager.hpp:113
void unlistenAutomod()
Definition: PubSubManager.cpp:550
State
Definition: PubSubManager.hpp:74
std::atomic< uint32_t > messagesReceived
Definition: PubSubManager.hpp:137
static constexpr int maxConnections
Definition: PubSubManager.hpp:55
struct chatterino::PubSub::@7 diag
bool listenToWhispers()
Definition: PubSubManager.cpp:587
std::atomic< uint32_t > unlistenResponses
Definition: PubSubManager.hpp:141
struct chatterino::PubSub::@6::@10 pointReward
PubSub(const QString &host, std::chrono::seconds pingInterval=std::chrono::seconds(15))
Definition: PubSubManager.cpp:22
Definition: PubSubManager.hpp:27
Signal< AutomodUserAction > automodUserMessage
Definition: PubSubManager.hpp:105
std::atomic< uint32_t > connectionsFailed
Definition: PubSubManager.hpp:136
Signal< ModeChangedAction > modeChanged
Definition: PubSubManager.hpp:91
std::atomic< uint32_t > listenResponses
Definition: PubSubManager.hpp:140
void setAccountData(QString token, QString userID)
Definition: PubSubManager.hpp:66
void listenToAutomod(const QString &channelID)
Definition: PubSubManager.cpp:630
void listenToChannelModerationActions(const QString &channelID)
Definition: PubSubManager.cpp:606
Signal< UnbanAction > userUnbanned
Definition: PubSubManager.hpp:95
void start()
Definition: PubSubManager.cpp:504
Signal< const QJsonObject & > redeemed
Definition: PubSubManager.hpp:117
Options to change the behaviour of the underlying websocket clients.
Definition: PubSubClientOptions.hpp:10
Signal< const PubSubWhisperMessage & > received
Definition: PubSubManager.hpp:112
Signal< AutomodInfoAction > automodInfoMessage
Definition: PubSubManager.hpp:106
void unlistenAllModerationActions()
Definition: PubSubManager.cpp:531
Signal< ClearChatAction > chatCleared
Definition: PubSubManager.hpp:89
Signal< DeleteAction > messageDeleted
Definition: PubSubManager.hpp:90
void unlistenWhispers()
Definition: PubSubManager.cpp:569
Definition: Listen.hpp:10
std::atomic< uint32_t > connectionsClosed
Definition: PubSubManager.hpp:134
struct chatterino::PubSub::@6 signals_
void listenToChannelPointRewards(const QString &channelID)
Definition: PubSubManager.cpp:654
Signal< AutomodAction > autoModMessageBlocked
Definition: PubSubManager.hpp:103
pajlada::Signals::Signal< PubSubAutoModQueueMessage, QString > autoModMessageCaught
Definition: PubSubManager.hpp:100