aboutsummaryrefslogtreecommitdiff
path: root/src/cachehandler.cpp
diff options
context:
space:
mode:
authorFelix "xq" Queißner <git@masterq32.de>2021-11-20 15:02:03 +0100
committerFelix "xq" Queißner <git@masterq32.de>2021-11-20 15:02:03 +0100
commit9dd660d66e23f02716d4b2bad84ac86764de71a6 (patch)
treef958489dc64d8afb34702ebe89bf24a71067d1c4 /src/cachehandler.cpp
parent9744a24ffbf4d5ea6ad8b418d740c90336ee33b8 (diff)
Improves caching api related to urls, implements fragment handling, fixes #237
Diffstat (limited to 'src/cachehandler.cpp')
-rw-r--r--src/cachehandler.cpp47
1 files changed, 22 insertions, 25 deletions
diff --git a/src/cachehandler.cpp b/src/cachehandler.cpp
index 35447f9..fc23681 100644
--- a/src/cachehandler.cpp
+++ b/src/cachehandler.cpp
@@ -4,6 +4,11 @@
#include <QDebug>
+QString CacheHandler::cleanUrl(QUrl const & url)
+{
+ return url.toString(QUrl::FullyEncoded | QUrl::RemoveFragment);
+}
+
void CacheHandler::push(const QUrl &url, const QByteArray &body, const MimeType &mime)
{
// Skip if this item is above the cached item size threshold
@@ -20,48 +25,40 @@ void CacheHandler::push(const QUrl &url, const QByteArray &body, const MimeType
this->popOldest();
}
- QString urlstr = url.toString(QUrl::FullyEncoded | QUrl::RemoveFragment);
+ QString urlstr = cleanUrl(url);
- if (this->page_cache.find(urlstr) != this->page_cache.end())
+ auto it = this->page_cache.find(urlstr);
+ if (it != this->page_cache.end())
{
- qDebug() << "cache: updating page";
- auto pg = this->page_cache[urlstr];
+ qDebug() << "cache: updating page" << urlstr;
+ auto pg = it->second;
pg->body = body;
pg->mime = mime;
pg->time_cached = QDateTime::currentDateTime();
- return;
}
-
- this->page_cache[urlstr] = std::make_shared<CachedPage>(
- url, body, mime, QDateTime::currentDateTime());
-
- qDebug() << "cache: pushing url " << url;
-
- return;
-}
-
-std::shared_ptr<CachedPage> CacheHandler::find(const QString &url)
-{
- if (this->page_cache.find(url) != this->page_cache.end())
+ else
{
- return this->page_cache[url];
+ this->page_cache.emplace(urlstr, std::make_shared<CachedPage>(url, body, mime, QDateTime::currentDateTime()));
+ qDebug() << "cache: pushing url " << urlstr;
}
- return nullptr;
}
+
std::shared_ptr<CachedPage> CacheHandler::find(const QUrl &url)
{
- return this->find(url.toString(QUrl::FullyEncoded | QUrl::RemoveFragment));
-}
+ QString urltext = cleanUrl(url);
-bool CacheHandler::contains(const QString &url)
-{
- return this->page_cache.find(url) != this->page_cache.end();
+ auto it = this->page_cache.find(urltext);
+ if(it != this->page_cache.end())
+ {
+ return it->second;
+ }
+ return nullptr;
}
bool CacheHandler::contains(const QUrl &url)
{
- return this->contains(url.toString(QUrl::FullyEncoded | QUrl::RemoveFragment));
+ return this->page_cache.find(cleanUrl(url)) != this->page_cache.end();
}
int CacheHandler::size()