95 lines
2.1 KiB
C++
95 lines
2.1 KiB
C++
#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);
|
|
}
|