#include "apparatus.h" apparatus *apparatus::_instance = nullptr; const QString apparatus::filename = "data.bin"; void apparatus::open_stream() { this->_bin_file = new QFile(apparatus::filename); this->_bin_file->open(QIODevice::ReadWrite); stream.setDevice(_bin_file); } void apparatus::close_stream() { stream.setDevice(nullptr); this->_bin_file->close(); delete this->_bin_file; this->_bin_file = nullptr; } apparatus::apparatus() { } apparatus::~apparatus() { this->shutdown(); } apparatus& apparatus::instance() { if (apparatus::_instance == nullptr) { throw std::runtime_error("System non initialized!"); } return *apparatus::_instance; } bool apparatus::isFirstRun() { return QFile().exists("first_run"); } void apparatus::generate_empty_data() { this->open_stream(); this->writeGIDS(); this->serialize_data(); this->close_stream(); } const auth_system& apparatus::get_auth_subsystem() { return this->_auth_system; } const object_system& apparatus::get_object_subsystem() { return this->_object_system; } void apparatus::init() { apparatus::_instance = new apparatus(); apparatus::instance().open_stream(); apparatus::instance().loadGIDS(); apparatus::instance().deserialize_data(); apparatus::instance().close_stream(); } void apparatus::shutdown() { apparatus::instance().open_stream(); apparatus::instance().writeGIDS(); apparatus::instance().serialize_data(); apparatus::instance().close_stream(); } void apparatus::writeGIDS() { entity_id vgid = vessel_entity::GID(); entity_id sgid = storage_entity::GID(); this->stream << vgid << sgid; } void apparatus::loadGIDS() { entity_id vgid, sgid; this->stream >> vgid >> sgid; vessel_entity::preloadGlobalId(vgid); storage_entity::preloadGlobalId(sgid); } void apparatus::serialize_data() { QFile().remove("first_run"); this->_auth_system.init(this->stream); this->_object_system.init(this->stream); } void apparatus::deserialize_data() { this->_auth_system.shutdown(this->stream); this->_object_system.shutdown(this->stream); }