refactor(eventsub): more references, less const (#5953)

This commit is contained in:
nerix
2025-02-13 13:46:52 +01:00
committed by GitHub
parent 9c96dd53c7
commit 9afd60534a
16 changed files with 154 additions and 139 deletions
+23 -18
View File
@@ -14,7 +14,8 @@ using namespace chatterino::eventsub::lib;
std::vector<boost::beast::flat_buffer> readMessages()
{
QFile file(":/bench/messages.ndjson");
assert(file.open(QFile::ReadOnly));
bool ok = file.open(QFile::ReadOnly);
assert(ok);
std::vector<boost::beast::flat_buffer> messages;
while (!file.atEnd())
@@ -41,67 +42,71 @@ public:
NoopListener() = default;
// NOLINTBEGIN(cppcoreguidelines-pro-type-const-cast)
void onSessionWelcome(messages::Metadata metadata,
payload::session_welcome::Payload payload) override
void onSessionWelcome(
const messages::Metadata &metadata,
const payload::session_welcome::Payload &payload) override
{
benchmark::DoNotOptimize(&metadata);
benchmark::DoNotOptimize(&payload);
}
void onNotification(messages::Metadata metadata,
void onNotification(const messages::Metadata &metadata,
const boost::json::value &jv) override
{
benchmark::DoNotOptimize(&metadata);
benchmark::DoNotOptimize(&jv);
}
void onChannelBan(messages::Metadata metadata,
payload::channel_ban::v1::Payload payload) override
void onChannelBan(const messages::Metadata &metadata,
const payload::channel_ban::v1::Payload &payload) override
{
benchmark::DoNotOptimize(&metadata);
benchmark::DoNotOptimize(&payload);
}
void onStreamOnline(messages::Metadata metadata,
payload::stream_online::v1::Payload payload) override
void onStreamOnline(
const messages::Metadata &metadata,
const payload::stream_online::v1::Payload &payload) override
{
benchmark::DoNotOptimize(&metadata);
benchmark::DoNotOptimize(&payload);
}
void onStreamOffline(messages::Metadata metadata,
payload::stream_offline::v1::Payload payload) override
void onStreamOffline(
const messages::Metadata &metadata,
const payload::stream_offline::v1::Payload &payload) override
{
benchmark::DoNotOptimize(&metadata);
benchmark::DoNotOptimize(&payload);
}
void onChannelChatNotification(
messages::Metadata metadata,
payload::channel_chat_notification::v1::Payload payload) override
const messages::Metadata &metadata,
const payload::channel_chat_notification::v1::Payload &payload) override
{
benchmark::DoNotOptimize(&metadata);
benchmark::DoNotOptimize(&payload);
}
void onChannelUpdate(messages::Metadata metadata,
payload::channel_update::v1::Payload payload) override
void onChannelUpdate(
const messages::Metadata &metadata,
const payload::channel_update::v1::Payload &payload) override
{
benchmark::DoNotOptimize(&metadata);
benchmark::DoNotOptimize(&payload);
}
void onChannelChatMessage(
messages::Metadata metadata,
payload::channel_chat_message::v1::Payload payload) override
const messages::Metadata &metadata,
const payload::channel_chat_message::v1::Payload &payload) override
{
benchmark::DoNotOptimize(&metadata);
benchmark::DoNotOptimize(&payload);
}
void onChannelModerate(
messages::Metadata metadata,
payload::channel_moderate::v2::Payload payload) override
const messages::Metadata &metadata,
const payload::channel_moderate::v2::Payload &payload) override
{
benchmark::DoNotOptimize(&metadata);
benchmark::DoNotOptimize(&payload);
@@ -18,39 +18,40 @@ public:
virtual ~Listener() = default;
virtual void onSessionWelcome(
messages::Metadata metadata,
payload::session_welcome::Payload payload) = 0;
const messages::Metadata &metadata,
const payload::session_welcome::Payload &payload) = 0;
virtual void onNotification(messages::Metadata metadata,
virtual void onNotification(const messages::Metadata &metadata,
const boost::json::value &jv) = 0;
// Subscription types
virtual void onChannelBan(messages::Metadata metadata,
payload::channel_ban::v1::Payload payload) = 0;
virtual void onChannelBan(
const messages::Metadata &metadata,
const payload::channel_ban::v1::Payload &payload) = 0;
virtual void onStreamOnline(
messages::Metadata metadata,
payload::stream_online::v1::Payload payload) = 0;
const messages::Metadata &metadata,
const payload::stream_online::v1::Payload &payload) = 0;
virtual void onStreamOffline(
messages::Metadata metadata,
payload::stream_offline::v1::Payload payload) = 0;
const messages::Metadata &metadata,
const payload::stream_offline::v1::Payload &payload) = 0;
virtual void onChannelChatNotification(
messages::Metadata metadata,
payload::channel_chat_notification::v1::Payload payload) = 0;
const messages::Metadata &metadata,
const payload::channel_chat_notification::v1::Payload &payload) = 0;
virtual void onChannelUpdate(
messages::Metadata metadata,
payload::channel_update::v1::Payload payload) = 0;
const messages::Metadata &metadata,
const payload::channel_update::v1::Payload &payload) = 0;
virtual void onChannelChatMessage(
messages::Metadata metadata,
payload::channel_chat_message::v1::Payload payload) = 0;
const messages::Metadata &metadata,
const payload::channel_chat_message::v1::Payload &payload) = 0;
virtual void onChannelModerate(
messages::Metadata metadata,
payload::channel_moderate::v2::Payload payload) = 0;
const messages::Metadata &metadata,
const payload::channel_moderate::v2::Payload &payload) = 0;
// Add your new subscription types above this line
};
@@ -21,13 +21,13 @@ namespace chatterino::eventsub::lib::messages {
*/
struct Metadata {
const std::string messageID;
const std::string messageType;
std::string messageID;
std::string messageType;
// TODO: should this be chronofied?
const std::string messageTimestamp;
std::string messageTimestamp;
const std::optional<std::string> subscriptionType;
const std::optional<std::string> subscriptionVersion;
std::optional<std::string> subscriptionType;
std::optional<std::string> subscriptionVersion;
};
#include "twitch-eventsub-ws/messages/metadata.inc"
@@ -91,9 +91,9 @@ struct Event {
};
struct Payload {
const subscription::Subscription subscription;
subscription::Subscription subscription;
const Event event;
Event event;
};
#include "twitch-eventsub-ws/payloads/channel-ban-v1.inc"
@@ -135,9 +135,9 @@ struct Event {
};
struct Payload {
const subscription::Subscription subscription;
subscription::Subscription subscription;
const Event event;
Event event;
};
#include "twitch-eventsub-ws/payloads/channel-chat-message-v1.inc"
@@ -190,9 +190,9 @@ struct Event {
};
struct Payload {
const subscription::Subscription subscription;
subscription::Subscription subscription;
const Event event;
Event event;
};
#include "twitch-eventsub-ws/payloads/channel-chat-notification-v1.inc"
@@ -10,31 +10,31 @@ namespace chatterino::eventsub::lib::payload::channel_update::v1 {
struct Event {
// The broadcaster's user ID
const std::string broadcasterUserID;
std::string broadcasterUserID;
// The broadcaster's user login
const std::string broadcasterUserLogin;
std::string broadcasterUserLogin;
// The broadcaster's user display name
const std::string broadcasterUserName;
std::string broadcasterUserName;
// The channel's stream title
const std::string title;
std::string title;
// The channel's broadcast language
const std::string language;
std::string language;
// The channels category ID
const std::string categoryID;
std::string categoryID;
// The category name
const std::string categoryName;
std::string categoryName;
// A boolean identifying whether the channel is flagged as mature
const bool isMature;
bool isMature;
};
struct Payload {
const subscription::Subscription subscription;
subscription::Subscription subscription;
const Event event;
Event event;
};
#include "twitch-eventsub-ws/payloads/channel-update-v1.inc"
@@ -23,7 +23,7 @@ namespace chatterino::eventsub::lib::payload::session_welcome {
/// json_inner=session
struct Payload {
const std::string id;
std::string id;
};
#include "twitch-eventsub-ws/payloads/session-welcome.inc"
@@ -10,17 +10,17 @@ namespace chatterino::eventsub::lib::payload::stream_offline::v1 {
struct Event {
// The broadcaster's user ID
const std::string broadcasterUserID;
std::string broadcasterUserID;
// The broadcaster's user login
const std::string broadcasterUserLogin;
std::string broadcasterUserLogin;
// The broadcaster's user display name
const std::string broadcasterUserName;
std::string broadcasterUserName;
};
struct Payload {
const subscription::Subscription subscription;
subscription::Subscription subscription;
const Event event;
Event event;
};
#include "twitch-eventsub-ws/payloads/stream-offline-v1.inc"
@@ -10,27 +10,27 @@ namespace chatterino::eventsub::lib::payload::stream_online::v1 {
struct Event {
// The ID of the stream
const std::string id;
std::string id;
// The broadcaster's user ID
const std::string broadcasterUserID;
std::string broadcasterUserID;
// The broadcaster's user login
const std::string broadcasterUserLogin;
std::string broadcasterUserLogin;
// The broadcaster's user display name
const std::string broadcasterUserName;
std::string broadcasterUserName;
// The stream type (e.g. live, playlist, watch_party)
const std::string type;
std::string type;
// The timestamp at which the stream went online
// TODO: chronofy?
const std::string startedAt;
std::string startedAt;
};
struct Payload {
const subscription::Subscription subscription;
subscription::Subscription subscription;
const Event event;
Event event;
};
#include "twitch-eventsub-ws/payloads/stream-online-v1.inc"
@@ -33,23 +33,23 @@ namespace chatterino::eventsub::lib::payload::subscription {
*/
struct Transport {
const std::string method;
const std::string sessionID;
std::string method;
std::string sessionID;
};
struct Subscription {
const std::string id;
const std::string status;
const std::string type;
const std::string version;
std::string id;
std::string status;
std::string type;
std::string version;
// TODO: How do we map condition here? vector of key/value pairs?
const Transport transport;
Transport transport;
// TODO: chronofy?
const std::string createdAt;
const int cost;
std::string createdAt;
int cost;
};
#include "twitch-eventsub-ws/payloads/subscription.inc"
+9 -8
View File
@@ -32,15 +32,16 @@ using EventSubSubscription = std::pair<std::string, std::string>;
using NotificationHandlers = std::unordered_map<
EventSubSubscription,
std::function<boost::system::error_code(
messages::Metadata, boost::json::value, std::unique_ptr<Listener> &)>,
std::function<boost::system::error_code(const messages::Metadata &,
const boost::json::value &,
std::unique_ptr<Listener> &)>,
boost::hash<EventSubSubscription>>;
using MessageHandlers =
std::unordered_map<std::string, std::function<boost::system::error_code(
messages::Metadata, boost::json::value,
std::unique_ptr<Listener> &,
const NotificationHandlers &)>>;
using MessageHandlers = std::unordered_map<
std::string,
std::function<boost::system::error_code(
const messages::Metadata &, const boost::json::value &,
std::unique_ptr<Listener> &, const NotificationHandlers &)>>;
namespace {
@@ -153,7 +154,7 @@ namespace {
{
return oPayload.error();
}
listener->onChannelModerate(metadata, std::move(*oPayload));
listener->onChannelModerate(metadata, *oPayload);
return boost::system::error_code{};
},
},
+21 -17
View File
@@ -55,51 +55,55 @@ boost::beast::flat_buffer readToFlatBuffer(const std::filesystem::path &path)
class NoOpListener : public chatterino::eventsub::lib::Listener
{
void onSessionWelcome(messages::Metadata metadata,
payload::session_welcome::Payload payload) override
void onSessionWelcome(
const messages::Metadata &metadata,
const payload::session_welcome::Payload &payload) override
{
}
void onNotification(messages::Metadata metadata,
void onNotification(const messages::Metadata &metadata,
const boost::json::value &jv) override
{
}
void onChannelBan(messages::Metadata metadata,
payload::channel_ban::v1::Payload payload) override
void onChannelBan(const messages::Metadata &metadata,
const payload::channel_ban::v1::Payload &payload) override
{
}
void onStreamOnline(messages::Metadata metadata,
payload::stream_online::v1::Payload payload) override
void onStreamOnline(
const messages::Metadata &metadata,
const payload::stream_online::v1::Payload &payload) override
{
}
void onStreamOffline(messages::Metadata metadata,
payload::stream_offline::v1::Payload payload) override
void onStreamOffline(
const messages::Metadata &metadata,
const payload::stream_offline::v1::Payload &payload) override
{
}
void onChannelChatNotification(
messages::Metadata metadata,
payload::channel_chat_notification::v1::Payload payload) override
const messages::Metadata &metadata,
const payload::channel_chat_notification::v1::Payload &payload) override
{
}
void onChannelUpdate(messages::Metadata metadata,
payload::channel_update::v1::Payload payload) override
void onChannelUpdate(
const messages::Metadata &metadata,
const payload::channel_update::v1::Payload &payload) override
{
}
void onChannelChatMessage(
messages::Metadata metadata,
payload::channel_chat_message::v1::Payload payload) override
const messages::Metadata &metadata,
const payload::channel_chat_message::v1::Payload &payload) override
{
}
void onChannelModerate(
messages::Metadata metadata,
payload::channel_moderate::v2::Payload payload) override
const messages::Metadata &metadata,
const payload::channel_moderate::v2::Payload &payload) override
{
}
};