aboutsummaryrefslogtreecommitdiff
path: root/oop2eindopdr/CacheManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'oop2eindopdr/CacheManager.cpp')
-rw-r--r--oop2eindopdr/CacheManager.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/oop2eindopdr/CacheManager.cpp b/oop2eindopdr/CacheManager.cpp
new file mode 100644
index 0000000..7de435e
--- /dev/null
+++ b/oop2eindopdr/CacheManager.cpp
@@ -0,0 +1,45 @@
+#include "CacheManager.h"
+
+#include <filesystem>
+#include <fstream>
+#include <iostream>
+#include <ctime>
+
+CacheManager::CacheManager(const char* cache_path) : CacheManager(std::string(cache_path)) { }
+CacheManager::CacheManager(std::string cache_path) {
+ this->cache_path = cache_path;
+ this->verify_cache();
+}
+
+CacheManager::~CacheManager() {
+ for (std::fstream* file : this->files) {
+ if (file != nullptr) {
+ file->close();
+ delete file;
+ file = nullptr;
+ }
+ }
+}
+
+void CacheManager::verify_cache() {
+ if (!std::filesystem::is_directory(this->cache_path)) this->init_cache();
+ this->update_cache();
+}
+
+void CacheManager::init_cache() {
+ std::filesystem::create_directory(this->cache_path);
+ this->update_cache();
+}
+
+void CacheManager::update_cache() {
+ std::fstream& date = *cache_get("date");
+ this->age = std::time(nullptr);
+ date << this->age;
+}
+
+std::fstream* CacheManager::cache_get(const char* filename) {
+ std::fstream* file = new std::fstream(filename, std::ios::out | std::ios::in);
+ this->files.push_back(file);
+ return file;
+}
+