some concurrency additions (#2698)

This commit is contained in:
fourtf
2021-05-01 13:38:58 +02:00
committed by GitHub
parent 345bcdb963
commit 8b3f301c50
10 changed files with 84 additions and 54 deletions
+9 -4
View File
@@ -4,14 +4,13 @@
#include <QJsonObject>
#include <QJsonValue>
#include <QThread>
#include <QUrl>
#include <map>
#include <shared_mutex>
#include "common/NetworkRequest.hpp"
#include "common/Outcome.hpp"
#include "messages/Emote.hpp"
#include <QUrl>
#include <map>
namespace chatterino {
void FfzBadges::initialize(Settings &settings, Paths &paths)
@@ -21,6 +20,8 @@ void FfzBadges::initialize(Settings &settings, Paths &paths)
boost::optional<EmotePtr> FfzBadges::getBadge(const UserId &id)
{
std::shared_lock lock(this->mutex_);
auto it = this->badgeMap.find(id.string);
if (it != this->badgeMap.end())
{
@@ -30,6 +31,8 @@ boost::optional<EmotePtr> FfzBadges::getBadge(const UserId &id)
}
boost::optional<QColor> FfzBadges::getBadgeColor(const UserId &id)
{
std::shared_lock lock(this->mutex_);
auto badgeIt = this->badgeMap.find(id.string);
if (badgeIt != this->badgeMap.end())
{
@@ -49,6 +52,8 @@ void FfzBadges::loadFfzBadges()
NetworkRequest(url)
.onSuccess([this](auto result) -> Outcome {
std::unique_lock lock(this->mutex_);
auto jsonRoot = result.parseJson();
int index = 0;
for (const auto &jsonBadge_ : jsonRoot.value("badges").toArray())
+7 -2
View File
@@ -4,8 +4,10 @@
#include <common/Singleton.hpp>
#include "common/Aliases.hpp"
#include "util/QStringHash.hpp"
#include <map>
#include <shared_mutex>
#include <vector>
namespace chatterino {
@@ -24,9 +26,12 @@ public:
private:
void loadFfzBadges();
std::map<QString, int> badgeMap;
std::shared_mutex mutex_;
std::unordered_map<QString, int> badgeMap;
std::vector<EmotePtr> badges;
std::map<int, QColor> colorMap;
std::unordered_map<int, QColor> colorMap;
};
} // namespace chatterino