diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-09-06 23:34:29 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-09-06 23:34:29 -0400 |
commit | 3832ff9a15f448ba15d60e91b949f21d3295fc24 (patch) | |
tree | f234cfca33fa730c19db7030a3c95ee706e9e30d /discord | |
parent | 66cc4b3cc7c7170bd7ff0347ed377d317dcdce91 (diff) | |
download | abaddon-portaudio-3832ff9a15f448ba15d60e91b949f21d3295fc24.tar.gz abaddon-portaudio-3832ff9a15f448ba15d60e91b949f21d3295fc24.zip |
DiscordClient uses signals now
Diffstat (limited to 'discord')
-rw-r--r-- | discord/discord.cpp | 43 | ||||
-rw-r--r-- | discord/discord.hpp | 26 |
2 files changed, 56 insertions, 13 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp index 8f87950..b9f3bbf 100644 --- a/discord/discord.cpp +++ b/discord/discord.cpp @@ -1,4 +1,3 @@ -#include "../abaddon.hpp" #include "discord.hpp" #include <cassert> #include "../util.hpp" @@ -9,10 +8,6 @@ DiscordClient::DiscordClient() LoadEventMap(); } -void DiscordClient::SetAbaddon(Abaddon *ptr) { - m_abaddon = ptr; -} - void DiscordClient::Start() { std::memset(&m_zstream, 0, sizeof(m_zstream)); inflateInit2(&m_zstream, MAX_WBITS + 32); @@ -53,7 +48,7 @@ const UserData &DiscordClient::GetUserData() const { } std::vector<Snowflake> DiscordClient::GetUserSortedGuilds() const { - std::vector<std::pair<Snowflake, const GuildData*>> sorted_guilds; + std::vector<std::pair<Snowflake, const GuildData *>> sorted_guilds; if (m_user_settings.GuildPositions.size()) { std::unordered_set<Snowflake> positioned_guilds(m_user_settings.GuildPositions.begin(), m_user_settings.GuildPositions.end()); @@ -109,7 +104,7 @@ void DiscordClient::UpdateSettingsGuildPositions(const std::vector<Snowflake> &p if (!CheckCode(r)) return; m_user_settings.GuildPositions = pos; - m_abaddon->DiscordNotifyChannelListFullRefresh(); + m_signal_channel_list_refresh.emit(); }); } @@ -357,7 +352,7 @@ void DiscordClient::HandleGatewayReady(const GatewayMessage &msg) { m_store.SetChannel(dm.ID, dm); } - m_abaddon->DiscordNotifyReady(); + m_signal_gateway_ready.emit(); m_user_data = data.User; m_user_settings = data.UserSettings; } @@ -368,12 +363,12 @@ void DiscordClient::HandleGatewayMessageCreate(const GatewayMessage &msg) { AddMessageToChannel(data.ID, data.ChannelID); m_store.SetUser(data.Author.ID, data.Author); AddUserToGuild(data.Author.ID, data.GuildID); - m_abaddon->DiscordNotifyMessageCreate(data.ID); + m_signal_message_create.emit(data.ID); } void DiscordClient::HandleGatewayMessageDelete(const GatewayMessage &msg) { MessageDeleteData data = msg.Data; - m_abaddon->DiscordNotifyMessageDelete(data.ID, data.ChannelID); + m_signal_message_delete.emit(data.ID, data.ChannelID); } void DiscordClient::HandleGatewayMessageUpdate(const GatewayMessage &msg) { @@ -389,7 +384,7 @@ void DiscordClient::HandleGatewayMessageUpdate(const GatewayMessage &msg) { auto copy = *current; copy.Content = data.Content; m_store.SetMessage(copy.ID, copy); - m_abaddon->DiscordNotifyMessageUpdateContent(data.ID, data.ChannelID); + m_signal_message_update.emit(data.ID, data.ChannelID); } } @@ -409,7 +404,7 @@ void DiscordClient::HandleGatewayGuildMemberListUpdate(const GatewayMessage &msg } } - m_abaddon->DiscordNotifyGuildMemberListUpdate(data.GuildID); + m_signal_guild_member_list_update.emit(data.GuildID); } void DiscordClient::AddMessageToChannel(Snowflake msg_id, Snowflake channel_id) { @@ -474,3 +469,27 @@ void DiscordClient::LoadEventMap() { m_event_map["MESSAGE_UPDATE"] = GatewayEvent::MESSAGE_UPDATE; m_event_map["GUILD_MEMBER_LIST_UPDATE"] = GatewayEvent::GUILD_MEMBER_LIST_UPDATE; } + +DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() { + return m_signal_gateway_ready; +} + +DiscordClient::type_signal_channel_list_refresh DiscordClient::signal_channel_list_refresh() { + return m_signal_channel_list_refresh; +} + +DiscordClient::type_signal_message_create DiscordClient::signal_message_create() { + return m_signal_message_create; +} + +DiscordClient::type_signal_message_delete DiscordClient::signal_message_delete() { + return m_signal_message_delete; +} + +DiscordClient::type_signal_message_update DiscordClient::signal_message_update() { + return m_signal_message_update; +} + +DiscordClient::type_signal_guild_member_list_update DiscordClient::signal_guild_member_list_update() { + return m_signal_guild_member_list_update; +} diff --git a/discord/discord.hpp b/discord/discord.hpp index eb87f38..abbdf2c 100644 --- a/discord/discord.hpp +++ b/discord/discord.hpp @@ -3,6 +3,7 @@ #include "http.hpp" #include "objects.hpp" #include "store.hpp" +#include <sigc++/sigc++.h> #include <nlohmann/json.hpp> #include <thread> #include <unordered_map> @@ -48,7 +49,6 @@ public: public: DiscordClient(); - void SetAbaddon(Abaddon *ptr); void Start(); void Stop(); bool IsStarted() const; @@ -128,4 +128,28 @@ private: std::atomic<int> m_heartbeat_msec = 0; HeartbeatWaiter m_heartbeat_waiter; std::atomic<bool> m_heartbeat_acked = true; + + // signals +public: + typedef sigc::signal<void> type_signal_gateway_ready; + typedef sigc::signal<void> type_signal_channel_list_refresh; + typedef sigc::signal<void, Snowflake> type_signal_message_create; + typedef sigc::signal<void, Snowflake, Snowflake> type_signal_message_delete; + typedef sigc::signal<void, Snowflake, Snowflake> type_signal_message_update; + typedef sigc::signal<void, Snowflake> type_signal_guild_member_list_update; + + type_signal_gateway_ready signal_gateway_ready(); + type_signal_channel_list_refresh signal_channel_list_refresh(); + type_signal_message_create signal_message_create(); + type_signal_message_delete signal_message_delete(); + type_signal_message_update signal_message_update(); + type_signal_guild_member_list_update signal_guild_member_list_update(); + +protected: + type_signal_gateway_ready m_signal_gateway_ready; + type_signal_channel_list_refresh m_signal_channel_list_refresh; + type_signal_message_create m_signal_message_create; + type_signal_message_delete m_signal_message_delete; + type_signal_message_update m_signal_message_update; + type_signal_guild_member_list_update m_signal_guild_member_list_update; }; |