9#ifndef OKSCONFLIBS_OKSCONFLIBSURATION_H_
10#define OKSCONFLIBS_OKSCONFLIBSURATION_H_
58 typedef std::map<std::string, std::set<std::string>>
SMap;
61 virtual bool test_object(
const std::string& class_name,
62 const std::string& name,
64 const std::vector<std::string>* rclasses);
65 virtual void get(
const std::string& class_name,
66 const std::string& name,
69 const std::vector<std::string>* rclasses);
70 virtual void get(
const std::string& class_name,
71 std::vector<conffwk::ConfigObject>& objects,
72 const std::string& query,
74 const std::vector<std::string>* rclasses);
76 const std::string& query,
77 std::vector<conffwk::ConfigObject>& objects,
79 const std::vector<std::string>* rclasses);
83 virtual void create(
const std::string& at,
84 const std::string& class_name,
85 const std::string&
id,
88 const std::string& class_name,
89 const std::string&
id,
93 virtual void open_db(
const std::string& db_name);
96 virtual void create(
const std::string& db_name,
const std::list<std::string>& includes);
97 virtual bool is_writable(
const std::string& db_name);
100 virtual void get_includes(
const std::string& db_name, std::list<std::string>& includes)
const;
103 virtual void commit(
const std::string& why);
104 virtual void abort();
106 virtual std::vector<dunedaq::conffwk::Version>
get_changes();
107 virtual std::vector<dunedaq::conffwk::Version>
get_versions(
const std::string& since,
108 const std::string& until,
110 bool skip_irrelevant);
112 virtual void subscribe(
const std::set<std::string>& class_names,
114 ConfigurationImpl::notify cb,
115 ConfigurationImpl::pre_notify pre_cb);
Provides pure virtual interface used by the Configuration class.
friend class ConfigObject
void(*) pre_notify(Configuration *)
Callback to pre-notify database changes.
void(*) notify(std::vector< ConfigurationChange * > &changes, Configuration *)
Callback to notify database changes.
Provides interface to the OKS XML schema and data files.
Provides interface to the OKS kernel.
OksObject describes instance of OksClass.
virtual bool test_object(const std::string &class_name, const std::string &name, unsigned long rlevel, const std::vector< std::string > *rclasses)
Test object existence (used by Python binding).
conffwk::ConfigurationImpl::pre_notify m_pre_fn
static void change_notify(oks::OksObject *, void *) noexcept
const oks::OksKernel & get_oks_kernel() const
oks::OksKernel * m_kernel
OksConfiguration() noexcept
virtual void open_db(const std::string &db_name)
Open database implementation in accordance with given name.
std::thread * m_check_db_thread
static void delete_notify(oks::OksObject *, void *) noexcept
std::set< std::string > m_class_names
virtual void subscribe(const std::set< std::string > &class_names, const SMap &objs, ConfigurationImpl::notify cb, ConfigurationImpl::pre_notify pre_cb)
friend class ResubscribeGuard
std::list< oks::OksObject * > m_created
virtual void print_profiling_info() noexcept
Print implementation specific profiling information.
std::set< oks::OksObject * > m_modified
virtual void get_includes(const std::string &db_name, std::list< std::string > &includes) const
Get included files.
virtual void prefetch_all_data()
Prefetch all data into client cache.
virtual bool loaded() const noexcept
Check if a database is loaded.
virtual void destroy(conffwk::ConfigObject &object)
Destroy object of class by id.
static void create_notify(oks::OksObject *, void *) noexcept
virtual void remove_include(const std::string &db_name, const std::string &include)
Remove include file.
virtual ~OksConfiguration()
OksConfigObject * new_object(oks::OksObject *obj) noexcept
virtual void get_updated_dbs(std::list< std::string > &dbs) const
Get uncommitted files.
OksConfigurationCheckDB * m_check_db_obj
virtual void close_db()
Close database implementation.
bool m_oks_kernel_no_repo
std::map< std::string, std::set< std::string > > SMap
std::map< std::string, std::set< std::string > > m_removed
virtual void set_commit_credentials(const std::string &user, const std::string &password)
Set commit credentials.
virtual std::vector< dunedaq::conffwk::Version > get_versions(const std::string &since, const std::string &until, dunedaq::conffwk::Version::QueryType type, bool skip_irrelevant)
Get archived versions.
unsigned int m_repo_error_count
friend struct OksConfigurationCheckDB
virtual void unsubscribe()
Remove subscription on database changes.
std::set< oks::OksFile * > m_created_files
virtual void add_include(const std::string &db_name, const std::string &include)
Add include file.
virtual std::vector< dunedaq::conffwk::Version > get_changes()
Get newly available versions.
virtual void create(const std::string &at, const std::string &class_name, const std::string &id, conffwk::ConfigObject &object)
Create object of class by id at given file.
virtual void abort()
Abort database changes.
virtual void get_superclasses(conffwk::fmap< conffwk::fset > &schema)
Get inheritance hierarchy.
friend class OksConfigObject
virtual bool is_writable(const std::string &db_name)
Return write access status.
bool m_oks_kernel_silence
virtual void get(const std::string &class_name, const std::string &name, conffwk::ConfigObject &object, unsigned long rlevel, const std::vector< std::string > *rclasses)
Get object of class by id.
virtual void commit(const std::string &why)
Commit database changes.
void close_database(bool unsubscribe)
conffwk::ConfigurationImpl::notify m_fn