Line data Source code
1 : #ifndef _ots_DatabaseConfigurationInterface_h_
2 : #define _ots_DatabaseConfigurationInterface_h_
3 :
4 : #include "ConfigurationInterface.h"
5 :
6 : #include <list>
7 : #include <map>
8 : #include <set>
9 : #include <stdexcept>
10 :
11 : namespace ots {
12 :
13 : struct ConfigurationBase;
14 :
15 : class DatabaseConfigurationInterface : public ConfigurationInterface {
16 : public:
17 : using config_version_map_t = std::map<std::string, int>;
18 403 : DatabaseConfigurationInterface() { ; }
19 401 : ~DatabaseConfigurationInterface() { ; }
20 :
21 : int fill(ConfigurationBase*, int) const noexcept;
22 :
23 : int saveActiveVersion(const ConfigurationBase*, bool = false) const noexcept;
24 :
25 : int markActiveVersionReadonly(const ConfigurationBase*) const noexcept;
26 :
27 : int findLatestVersion(const ConfigurationBase*) const noexcept;
28 :
29 : std::set<int> getVersions(const ConfigurationBase*) const noexcept;
30 :
31 : std::set<std::string> listConfigurationsTypes() const;
32 :
33 : std::set<std::string> findAllGlobalConfigurations(std::string const& = "") const;
34 :
35 : config_version_map_t loadGlobalConfiguration(std::string const&) const;
36 :
37 : void storeGlobalConfiguration(config_version_map_t const&, std::string const&, bool = false) const;
38 :
39 : void storeGlobalConfiguration_mt(config_version_map_t const&, std::string const&, bool = false) const;
40 :
41 : std::set<std::string> findCompositionsContaining(std::string const&, std::string const&) const;
42 :
43 : using result_t = std::pair<bool, std::string>;
44 :
45 : result_t getVersions_safe(const ConfigurationBase*, std::set<int>&) const noexcept;
46 :
47 : result_t listConfigurationsTypes_safe(std::set<std::string>&) const noexcept;
48 :
49 : result_t findAllGlobalConfigurations_safe(std::string const&, std::set<std::string>&) const noexcept;
50 :
51 : result_t loadGlobalConfiguration_safe(std::string const&, config_version_map_t&) const noexcept;
52 :
53 : result_t findCompositionsContaining_safe(std::string const&, std::string const&, std::set<std::string>&) const noexcept;
54 :
55 : private:
56 : };
57 : } // namespace ots
58 :
59 : #endif
|