aboutsummaryrefslogtreecommitdiff
path: root/server/src/util/io.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/util/io.cpp')
-rw-r--r--server/src/util/io.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/server/src/util/io.cpp b/server/src/util/io.cpp
new file mode 100644
index 0000000..1f9bca6
--- /dev/null
+++ b/server/src/util/io.cpp
@@ -0,0 +1,41 @@
+#include "../include.h"
+#include "io.h"
+
+std::shared_ptr<spdlog::logger> io::logger;
+
+void io::init(const bool &trunc) {
+ auto sink =
+ std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
+ sink->set_pattern("[%R][%^%l%$] %v");
+
+ auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("server.log", trunc);
+
+ std::vector<spdlog::sink_ptr> log_sinks;
+ log_sinks.emplace_back(sink);
+ log_sinks.emplace_back(file_sink);
+
+ logger = std::make_shared<spdlog::logger>("server", log_sinks.begin(), log_sinks.end());
+ spdlog::register_logger(logger);
+
+ spdlog::flush_every(std::chrono::seconds(1));
+}
+
+void io::read_file(const std::string_view name, std::vector<char> &out) {
+ std::ifstream file(name.data());
+ if (!file.good()) {
+ io::logger->error("failed to load {}.", name.data());
+ return;
+ }
+
+ file.unsetf(std::ios::skipws);
+
+ file.seekg(0, std::ios::end);
+ const size_t size = file.tellg();
+ file.seekg(0, std::ios::beg);
+
+ out.resize(size);
+
+ file.read(out.data(), size);
+
+ file.close();
+}