aboutsummaryrefslogtreecommitdiff
path: root/src/cachehandler.cpp
diff options
context:
space:
mode:
authorMike Skec <skec@protonmail.ch>2021-01-06 19:37:26 +1100
committerFelix Queißner <felix@ib-queissner.de>2021-01-06 10:51:18 +0100
commit2a9bb4fa6121de62d9e6ba06d9a109ba6d57f14c (patch)
tree7f2b49ca97071b003697ffeaaa904ce1dfe166d6 /src/cachehandler.cpp
parent24086fdfe92814c38da6d219916ee9d45d8ba581 (diff)
cache code refactor
Diffstat (limited to 'src/cachehandler.cpp')
-rw-r--r--src/cachehandler.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/cachehandler.cpp b/src/cachehandler.cpp
new file mode 100644
index 0000000..0bd7f36
--- /dev/null
+++ b/src/cachehandler.cpp
@@ -0,0 +1,53 @@
+#include "cachehandler.hpp"
+#include "kristall.hpp"
+
+#include <QDebug>
+
+void CacheHandler::push(const QUrl &url, const QByteArray &body, const MimeType &mime)
+{
+ QString urlstr = url.toString(QUrl::FullyEncoded | QUrl::RemoveFragment);
+
+ if (this->page_cache.find(urlstr) != this->page_cache.end())
+ {
+ qDebug() << "Updating cached page";
+ auto pg = this->page_cache[urlstr];
+ pg->body = body;
+ pg->mime = mime;
+ return;
+ }
+
+ this->page_cache[urlstr] = std::make_shared<CachedPage>(url, body, mime);
+
+ qDebug() << "Pushed page to cache: " << url;
+
+ return;
+}
+
+std::shared_ptr<CachedPage> CacheHandler::find(const QString &url)
+{
+ if (this->page_cache.find(url) != this->page_cache.end())
+ {
+ return page_cache[url];
+ }
+ return nullptr;
+}
+
+std::shared_ptr<CachedPage> CacheHandler::find(const QUrl &url)
+{
+ return this->find(url.toString(QUrl::FullyEncoded | QUrl::RemoveFragment));
+}
+
+bool CacheHandler::contains(const QString &url) const
+{
+ return this->page_cache.find(url) != this->page_cache.end();
+}
+
+bool CacheHandler::contains(const QUrl &url) const
+{
+ return this->contains(url.toString(QUrl::FullyEncoded | QUrl::RemoveFragment));
+}
+
+CacheMap const& CacheHandler::getPages() const
+{
+ return this->page_cache;
+}