diff options
Diffstat (limited to 'server/src/util/io.cpp')
| -rw-r--r-- | server/src/util/io.cpp | 41 |
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(); +} |