Serialize CECD, CFG services
This commit is contained in:
parent
ef2e503281
commit
2d2c7218ef
23
TODO
23
TODO
|
@ -7,8 +7,22 @@
|
||||||
Memory only
|
Memory only
|
||||||
✔ Service manager @started(19-12-23 00:36) @done(19-12-23 11:38) @lasted(11h2m3s)
|
✔ Service manager @started(19-12-23 00:36) @done(19-12-23 11:38) @lasted(11h2m3s)
|
||||||
✔ Fix or ignore inverse map @done(19-12-23 12:46)
|
✔ Fix or ignore inverse map @done(19-12-23 12:46)
|
||||||
☐ App loader
|
✘ App loader @cancelled(20-01-01 22:59)
|
||||||
☐ Archive manager
|
No relevant state
|
||||||
|
☐ Archive manager @started(20-01-01 23:03)
|
||||||
|
☐ NCCH
|
||||||
|
☐ Normal
|
||||||
|
☐ Self
|
||||||
|
☐ SaveData
|
||||||
|
☐ Normal
|
||||||
|
☐ Ext
|
||||||
|
☐ Other
|
||||||
|
☐ Source SD
|
||||||
|
☐ System
|
||||||
|
☐ SDMC
|
||||||
|
☐ Normal
|
||||||
|
☐ Write-only
|
||||||
|
☐ File refs
|
||||||
☐ Custom texture cache
|
☐ Custom texture cache
|
||||||
✘ MMIO @cancelled(20-01-01 01:06)
|
✘ MMIO @cancelled(20-01-01 01:06)
|
||||||
Seems that this whole subsystem is only used in tests
|
Seems that this whole subsystem is only used in tests
|
||||||
|
@ -76,9 +90,8 @@
|
||||||
✔ BOSS @started(19-12-25 21:48) @done(19-12-25 23:18) @lasted(1h30m14s)
|
✔ BOSS @started(19-12-25 21:48) @done(19-12-25 23:18) @lasted(1h30m14s)
|
||||||
☐ CAM @started(19-12-26 10:37)
|
☐ CAM @started(19-12-26 10:37)
|
||||||
Need to check capture_result
|
Need to check capture_result
|
||||||
☐ CECD
|
✔ CECD @done(20-01-01 23:58)
|
||||||
☐ Archive backend / file handles
|
✔ CFG @done(20-01-02 00:44)
|
||||||
☐ CFG
|
|
||||||
Also needs archive backend..
|
Also needs archive backend..
|
||||||
✔ CSND @started(19-12-26 17:51) @done(19-12-26 17:56) @lasted(5m30s)
|
✔ CSND @started(19-12-26 17:51) @done(19-12-26 17:56) @lasted(5m30s)
|
||||||
✔ DLP @done(19-12-26 18:02)
|
✔ DLP @done(19-12-26 18:02)
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#pragma once
|
||||||
#include <boost/serialization/serialization.hpp>
|
#include <boost/serialization/serialization.hpp>
|
||||||
|
|
||||||
class construct_access {
|
class construct_access {
|
||||||
|
|
|
@ -168,7 +168,12 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::unique_ptr<DelayGenerator> delay_generator;
|
std::unique_ptr<DelayGenerator> delay_generator; // TODO: Replace with virtual GetOpenDelayNs
|
||||||
|
|
||||||
|
private:
|
||||||
|
template <class Archive>
|
||||||
|
void serialize(Archive& ar, const unsigned int) {}
|
||||||
|
friend class boost::serialization::access;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ArchiveFactory : NonCopyable {
|
class ArchiveFactory : NonCopyable {
|
||||||
|
@ -205,6 +210,10 @@ public:
|
||||||
* @return Format information about the archive or error code
|
* @return Format information about the archive or error code
|
||||||
*/
|
*/
|
||||||
virtual ResultVal<ArchiveFormatInfo> GetFormatInfo(const Path& path, u64 program_id) const = 0;
|
virtual ResultVal<ArchiveFormatInfo> GetFormatInfo(const Path& path, u64 program_id) const = 0;
|
||||||
|
|
||||||
|
template <class Archive>
|
||||||
|
void serialize(Archive& ar, const unsigned int) {}
|
||||||
|
friend class boost::serialization::access;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace FileSys
|
} // namespace FileSys
|
||||||
|
|
|
@ -105,13 +105,6 @@ private:
|
||||||
std::chrono::seconds init_time;
|
std::chrono::seconds init_time;
|
||||||
|
|
||||||
SharedPageDef shared_page;
|
SharedPageDef shared_page;
|
||||||
|
|
||||||
friend class boost::serialization::access;
|
|
||||||
template <class Archive>
|
|
||||||
void serialize(Archive& ar, const unsigned int file_version) {
|
|
||||||
auto o_shared_page = boost::serialization::binary_object(&shared_page, sizeof(shared_page));
|
|
||||||
ar& o_shared_page;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace SharedPage
|
} // namespace SharedPage
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include <cryptopp/base64.h>
|
#include <cryptopp/base64.h>
|
||||||
#include <cryptopp/hmac.h>
|
#include <cryptopp/hmac.h>
|
||||||
#include <cryptopp/sha.h>
|
#include <cryptopp/sha.h>
|
||||||
|
#include "common/archives.h"
|
||||||
#include "common/common_paths.h"
|
#include "common/common_paths.h"
|
||||||
#include "common/file_util.h"
|
#include "common/file_util.h"
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
|
@ -24,8 +25,19 @@
|
||||||
#include "core/hle/service/cfg/cfg.h"
|
#include "core/hle/service/cfg/cfg.h"
|
||||||
#include "fmt/format.h"
|
#include "fmt/format.h"
|
||||||
|
|
||||||
|
SERVICE_CONSTRUCT_IMPL(Service::CECD::Module)
|
||||||
|
SERIALIZE_EXPORT_IMPL(Service::CECD::Module)
|
||||||
|
|
||||||
namespace Service::CECD {
|
namespace Service::CECD {
|
||||||
|
|
||||||
|
template <class Archive>
|
||||||
|
void Module::serialize(Archive& ar, const unsigned int) {
|
||||||
|
ar& cecd_system_save_data_archive;
|
||||||
|
ar& cecinfo_event;
|
||||||
|
ar& change_state_event;
|
||||||
|
}
|
||||||
|
SERIALIZE_IMPL(Module)
|
||||||
|
|
||||||
using CecDataPathType = Module::CecDataPathType;
|
using CecDataPathType = Module::CecDataPathType;
|
||||||
using CecOpenMode = Module::CecOpenMode;
|
using CecOpenMode = Module::CecOpenMode;
|
||||||
using CecSystemInfoType = Module::CecSystemInfoType;
|
using CecSystemInfoType = Module::CecSystemInfoType;
|
||||||
|
@ -1340,7 +1352,8 @@ void Module::CheckAndUpdateFile(const CecDataPathType path_type, const u32 ncch_
|
||||||
case CecDataPathType::MboxData:
|
case CecDataPathType::MboxData:
|
||||||
case CecDataPathType::MboxIcon:
|
case CecDataPathType::MboxIcon:
|
||||||
case CecDataPathType::MboxTitle:
|
case CecDataPathType::MboxTitle:
|
||||||
default: {}
|
default: {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -584,7 +584,7 @@ public:
|
||||||
*/
|
*/
|
||||||
void GetCecInfoEventHandleSys(Kernel::HLERequestContext& ctx);
|
void GetCecInfoEventHandleSys(Kernel::HLERequestContext& ctx);
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
std::shared_ptr<Module> cecd;
|
std::shared_ptr<Module> cecd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -613,9 +613,16 @@ private:
|
||||||
std::shared_ptr<Kernel::Event> change_state_event;
|
std::shared_ptr<Kernel::Event> change_state_event;
|
||||||
|
|
||||||
Core::System& system;
|
Core::System& system;
|
||||||
|
|
||||||
|
template <class Archive>
|
||||||
|
void serialize(Archive& ar, const unsigned int);
|
||||||
|
friend class boost::serialization::access;
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Initialize CECD service(s)
|
/// Initialize CECD service(s)
|
||||||
void InstallInterfaces(Core::System& system);
|
void InstallInterfaces(Core::System& system);
|
||||||
|
|
||||||
} // namespace Service::CECD
|
} // namespace Service::CECD
|
||||||
|
|
||||||
|
SERVICE_CONSTRUCT(Service::CECD::Module)
|
||||||
|
BOOST_CLASS_EXPORT_KEY(Service::CECD::Module)
|
||||||
|
|
|
@ -2,8 +2,11 @@
|
||||||
// Licensed under GPLv2 or any later version
|
// Licensed under GPLv2 or any later version
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "common/archives.h"
|
||||||
#include "core/hle/service/cecd/cecd_ndm.h"
|
#include "core/hle/service/cecd/cecd_ndm.h"
|
||||||
|
|
||||||
|
SERIALIZE_EXPORT_IMPL(Service::CECD::CECD_NDM)
|
||||||
|
|
||||||
namespace Service::CECD {
|
namespace Service::CECD {
|
||||||
|
|
||||||
CECD_NDM::CECD_NDM(std::shared_ptr<Module> cecd)
|
CECD_NDM::CECD_NDM(std::shared_ptr<Module> cecd)
|
||||||
|
|
|
@ -11,6 +11,12 @@ namespace Service::CECD {
|
||||||
class CECD_NDM final : public Module::Interface {
|
class CECD_NDM final : public Module::Interface {
|
||||||
public:
|
public:
|
||||||
explicit CECD_NDM(std::shared_ptr<Module> cecd);
|
explicit CECD_NDM(std::shared_ptr<Module> cecd);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SERVICE_SERIALIZATION(CECD_NDM, cecd, Module)
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::CECD
|
} // namespace Service::CECD
|
||||||
|
|
||||||
|
BOOST_CLASS_EXPORT_KEY(Service::CECD::CECD_NDM)
|
||||||
|
BOOST_SERIALIZATION_CONSTRUCT(Service::CECD::CECD_NDM)
|
||||||
|
|
|
@ -2,8 +2,11 @@
|
||||||
// Licensed under GPLv2 or any later version
|
// Licensed under GPLv2 or any later version
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "common/archives.h"
|
||||||
#include "core/hle/service/cecd/cecd_s.h"
|
#include "core/hle/service/cecd/cecd_s.h"
|
||||||
|
|
||||||
|
SERIALIZE_EXPORT_IMPL(Service::CECD::CECD_S)
|
||||||
|
|
||||||
namespace Service::CECD {
|
namespace Service::CECD {
|
||||||
|
|
||||||
CECD_S::CECD_S(std::shared_ptr<Module> cecd)
|
CECD_S::CECD_S(std::shared_ptr<Module> cecd)
|
||||||
|
|
|
@ -11,6 +11,12 @@ namespace Service::CECD {
|
||||||
class CECD_S final : public Module::Interface {
|
class CECD_S final : public Module::Interface {
|
||||||
public:
|
public:
|
||||||
explicit CECD_S(std::shared_ptr<Module> cecd);
|
explicit CECD_S(std::shared_ptr<Module> cecd);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SERVICE_SERIALIZATION(CECD_S, cecd, Module)
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::CECD
|
} // namespace Service::CECD
|
||||||
|
|
||||||
|
BOOST_CLASS_EXPORT_KEY(Service::CECD::CECD_S)
|
||||||
|
BOOST_SERIALIZATION_CONSTRUCT(Service::CECD::CECD_S)
|
||||||
|
|
|
@ -2,8 +2,11 @@
|
||||||
// Licensed under GPLv2 or any later version
|
// Licensed under GPLv2 or any later version
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "common/archives.h"
|
||||||
#include "core/hle/service/cecd/cecd_u.h"
|
#include "core/hle/service/cecd/cecd_u.h"
|
||||||
|
|
||||||
|
SERIALIZE_EXPORT_IMPL(Service::CECD::CECD_U)
|
||||||
|
|
||||||
namespace Service::CECD {
|
namespace Service::CECD {
|
||||||
|
|
||||||
CECD_U::CECD_U(std::shared_ptr<Module> cecd)
|
CECD_U::CECD_U(std::shared_ptr<Module> cecd)
|
||||||
|
|
|
@ -11,6 +11,12 @@ namespace Service::CECD {
|
||||||
class CECD_U final : public Module::Interface {
|
class CECD_U final : public Module::Interface {
|
||||||
public:
|
public:
|
||||||
explicit CECD_U(std::shared_ptr<Module> cecd);
|
explicit CECD_U(std::shared_ptr<Module> cecd);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SERVICE_SERIALIZATION(CECD_U, cecd, Module)
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::CECD
|
} // namespace Service::CECD
|
||||||
|
|
||||||
|
BOOST_CLASS_EXPORT_KEY(Service::CECD::CECD_U)
|
||||||
|
BOOST_SERIALIZATION_CONSTRUCT(Service::CECD::CECD_U)
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
#include <cryptopp/osrng.h>
|
#include <cryptopp/osrng.h>
|
||||||
#include <cryptopp/sha.h>
|
#include <cryptopp/sha.h>
|
||||||
|
#include "common/archives.h"
|
||||||
#include "common/common_paths.h"
|
#include "common/common_paths.h"
|
||||||
#include "common/file_util.h"
|
#include "common/file_util.h"
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
|
@ -24,8 +25,18 @@
|
||||||
#include "core/hle/service/cfg/cfg_u.h"
|
#include "core/hle/service/cfg/cfg_u.h"
|
||||||
#include "core/settings.h"
|
#include "core/settings.h"
|
||||||
|
|
||||||
|
SERIALIZE_EXPORT_IMPL(Service::CFG::Module)
|
||||||
|
|
||||||
namespace Service::CFG {
|
namespace Service::CFG {
|
||||||
|
|
||||||
|
template <class Archive>
|
||||||
|
void Module::serialize(Archive& ar, const unsigned int) {
|
||||||
|
ar& cfg_config_file_buffer;
|
||||||
|
ar& cfg_system_save_data_archive;
|
||||||
|
ar& preferred_region_code;
|
||||||
|
}
|
||||||
|
SERIALIZE_IMPL(Module)
|
||||||
|
|
||||||
/// The maximum number of block entries that can exist in the config file
|
/// The maximum number of block entries that can exist in the config file
|
||||||
static const u32 CONFIG_FILE_MAX_BLOCK_ENTRIES = 1479;
|
static const u32 CONFIG_FILE_MAX_BLOCK_ENTRIES = 1479;
|
||||||
|
|
||||||
|
|
|
@ -244,7 +244,7 @@ public:
|
||||||
(this->*function)(ctx, id);
|
(this->*function)(ctx, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
std::shared_ptr<Module> cfg;
|
std::shared_ptr<Module> cfg;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -426,6 +426,10 @@ private:
|
||||||
std::array<u8, CONFIG_SAVEFILE_SIZE> cfg_config_file_buffer;
|
std::array<u8, CONFIG_SAVEFILE_SIZE> cfg_config_file_buffer;
|
||||||
std::unique_ptr<FileSys::ArchiveBackend> cfg_system_save_data_archive;
|
std::unique_ptr<FileSys::ArchiveBackend> cfg_system_save_data_archive;
|
||||||
u32 preferred_region_code = 0;
|
u32 preferred_region_code = 0;
|
||||||
|
|
||||||
|
template <class Archive>
|
||||||
|
void serialize(Archive& ar, const unsigned int);
|
||||||
|
friend class boost::serialization::access;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::shared_ptr<Module> GetModule(Core::System& system);
|
std::shared_ptr<Module> GetModule(Core::System& system);
|
||||||
|
@ -436,3 +440,5 @@ void InstallInterfaces(Core::System& system);
|
||||||
std::string GetConsoleIdHash(Core::System& system);
|
std::string GetConsoleIdHash(Core::System& system);
|
||||||
|
|
||||||
} // namespace Service::CFG
|
} // namespace Service::CFG
|
||||||
|
|
||||||
|
BOOST_CLASS_EXPORT_KEY(Service::CFG::Module)
|
||||||
|
|
|
@ -2,8 +2,11 @@
|
||||||
// Licensed under GPLv2 or any later version
|
// Licensed under GPLv2 or any later version
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "common/archives.h"
|
||||||
#include "core/hle/service/cfg/cfg_i.h"
|
#include "core/hle/service/cfg/cfg_i.h"
|
||||||
|
|
||||||
|
SERIALIZE_EXPORT_IMPL(Service::CFG::CFG_I)
|
||||||
|
|
||||||
namespace Service::CFG {
|
namespace Service::CFG {
|
||||||
|
|
||||||
CFG_I::CFG_I(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "cfg:i", 23) {
|
CFG_I::CFG_I(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "cfg:i", 23) {
|
||||||
|
|
|
@ -11,6 +11,12 @@ namespace Service::CFG {
|
||||||
class CFG_I final : public Module::Interface {
|
class CFG_I final : public Module::Interface {
|
||||||
public:
|
public:
|
||||||
explicit CFG_I(std::shared_ptr<Module> cfg);
|
explicit CFG_I(std::shared_ptr<Module> cfg);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SERVICE_SERIALIZATION(CFG_I, cfg, Module)
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::CFG
|
} // namespace Service::CFG
|
||||||
|
|
||||||
|
BOOST_CLASS_EXPORT_KEY(Service::CFG::CFG_I)
|
||||||
|
BOOST_SERIALIZATION_CONSTRUCT(Service::CFG::CFG_I)
|
||||||
|
|
|
@ -2,8 +2,11 @@
|
||||||
// Licensed under GPLv2 or any later version
|
// Licensed under GPLv2 or any later version
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "common/archives.h"
|
||||||
#include "core/hle/service/cfg/cfg_nor.h"
|
#include "core/hle/service/cfg/cfg_nor.h"
|
||||||
|
|
||||||
|
SERIALIZE_EXPORT_IMPL(Service::CFG::CFG_NOR)
|
||||||
|
|
||||||
namespace Service::CFG {
|
namespace Service::CFG {
|
||||||
|
|
||||||
CFG_NOR::CFG_NOR() : ServiceFramework("cfg:nor", 23) {
|
CFG_NOR::CFG_NOR() : ServiceFramework("cfg:nor", 23) {
|
||||||
|
|
|
@ -14,3 +14,5 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::CFG
|
} // namespace Service::CFG
|
||||||
|
|
||||||
|
BOOST_CLASS_EXPORT_KEY(Service::CFG::CFG_NOR)
|
||||||
|
|
|
@ -2,8 +2,11 @@
|
||||||
// Licensed under GPLv2 or any later version
|
// Licensed under GPLv2 or any later version
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "common/archives.h"
|
||||||
#include "core/hle/service/cfg/cfg_s.h"
|
#include "core/hle/service/cfg/cfg_s.h"
|
||||||
|
|
||||||
|
SERIALIZE_EXPORT_IMPL(Service::CFG::CFG_S)
|
||||||
|
|
||||||
namespace Service::CFG {
|
namespace Service::CFG {
|
||||||
|
|
||||||
CFG_S::CFG_S(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "cfg:s", 23) {
|
CFG_S::CFG_S(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "cfg:s", 23) {
|
||||||
|
|
|
@ -11,6 +11,12 @@ namespace Service::CFG {
|
||||||
class CFG_S final : public Module::Interface {
|
class CFG_S final : public Module::Interface {
|
||||||
public:
|
public:
|
||||||
explicit CFG_S(std::shared_ptr<Module> cfg);
|
explicit CFG_S(std::shared_ptr<Module> cfg);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SERVICE_SERIALIZATION(CFG_S, cfg, Module)
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::CFG
|
} // namespace Service::CFG
|
||||||
|
|
||||||
|
BOOST_CLASS_EXPORT_KEY(Service::CFG::CFG_S)
|
||||||
|
BOOST_SERIALIZATION_CONSTRUCT(Service::CFG::CFG_S)
|
||||||
|
|
|
@ -2,8 +2,11 @@
|
||||||
// Licensed under GPLv2 or any later version
|
// Licensed under GPLv2 or any later version
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "common/archives.h"
|
||||||
#include "core/hle/service/cfg/cfg_u.h"
|
#include "core/hle/service/cfg/cfg_u.h"
|
||||||
|
|
||||||
|
SERIALIZE_EXPORT_IMPL(Service::CFG::CFG_U)
|
||||||
|
|
||||||
namespace Service::CFG {
|
namespace Service::CFG {
|
||||||
|
|
||||||
CFG_U::CFG_U(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "cfg:u", 23) {
|
CFG_U::CFG_U(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "cfg:u", 23) {
|
||||||
|
|
|
@ -11,6 +11,12 @@ namespace Service::CFG {
|
||||||
class CFG_U final : public Module::Interface {
|
class CFG_U final : public Module::Interface {
|
||||||
public:
|
public:
|
||||||
explicit CFG_U(std::shared_ptr<Module> cfg);
|
explicit CFG_U(std::shared_ptr<Module> cfg);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SERVICE_SERIALIZATION(CFG_U, cfg, Module)
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::CFG
|
} // namespace Service::CFG
|
||||||
|
|
||||||
|
BOOST_CLASS_EXPORT_KEY(Service::CFG::CFG_U)
|
||||||
|
BOOST_SERIALIZATION_CONSTRUCT(Service::CFG::CFG_U)
|
||||||
|
|
|
@ -260,6 +260,13 @@ private:
|
||||||
*/
|
*/
|
||||||
std::unordered_map<ArchiveHandle, std::unique_ptr<ArchiveBackend>> handle_map;
|
std::unordered_map<ArchiveHandle, std::unique_ptr<ArchiveBackend>> handle_map;
|
||||||
ArchiveHandle next_handle = 1;
|
ArchiveHandle next_handle = 1;
|
||||||
|
|
||||||
|
template <class Archive>
|
||||||
|
void serialize(Archive& ar, const unsigned int) {
|
||||||
|
ar& id_code_map;
|
||||||
|
ar& handle_map;
|
||||||
|
ar& next_handle;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::FS
|
} // namespace Service::FS
|
||||||
|
|
Reference in New Issue