2#ifndef OKSCONFLIBS_OKSCONFLIBSURATION_H_
3#define OKSCONFLIBS_OKSCONFLIBSURATION_H_
25namespace oksconflibs {
29struct OksConfigurationCheckDB;
43 typedef std::map< std::string , std::set<std::string> >
SMap;
47 virtual bool test_object(
const std::string& class_name,
const std::string& name,
unsigned long rlevel,
const std::vector<std::string> * rclasses);
48 virtual void get(
const std::string& class_name,
const std::string& name,
conffwk::ConfigObject&
object,
unsigned long rlevel,
const std::vector<std::string> * rclasses);
49 virtual void get(
const std::string& class_name, std::vector<conffwk::ConfigObject>& objects,
const std::string& query,
unsigned long rlevel,
const std::vector<std::string> * rclasses);
50 virtual void get(
const conffwk::ConfigObject& obj_from,
const std::string& query, std::vector<conffwk::ConfigObject>& objects,
unsigned long rlevel,
const std::vector<std::string> * rclasses);
58 virtual void open_db(
const std::string& db_name);
61 virtual void create(
const std::string& db_name,
const std::list<std::string>& includes);
62 virtual bool is_writable(
const std::string& db_name);
63 virtual void add_include(
const std::string& db_name,
const std::string& include);
64 virtual void remove_include(
const std::string& db_name,
const std::string& include);
65 virtual void get_includes(
const std::string& db_name, std::list<std::string>& includes)
const;
68 virtual void commit(
const std::string& why);
71 virtual std::vector<dunedaq::conffwk::Version>
get_changes();
74 virtual void subscribe(
const std::set<std::string>& class_names,
const SMap& objs, ConfigurationImpl::notify cb, ConfigurationImpl::pre_notify pre_cb);
119 std::map<std::string, std::set<std::string> >
m_removed;
Provides pure virtual interface used by the Configuration class.
void(*) notify(std::vector< ConfigurationChange * > &changes, Configuration *)
Callback to notify database changes.
friend class ConfigObject
void(*) pre_notify(Configuration *)
Callback to pre-notify database changes.
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 print_profiling_info() noexcept
Print implementation specific profiling information.
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
std::list< oks::OksObject * > m_created
virtual void remove_include(const std::string &db_name, const std::string &include)
Remove include file.
std::set< oks::OksFile * > m_created_files
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 > > m_removed
std::map< std::string, std::set< std::string > > SMap
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
virtual void unsubscribe()
Remove subscription on database changes.
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.
std::set< oks::OksObject * > m_modified
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