8#ifndef CONFFWK_DAL_OBJECT_H_
9#define CONFFWK_DAL_OBJECT_H_
128 const std::string&
UID() const noexcept
148 bool castable(
const std::string& target)
const noexcept
157 bool castable(
const std::string * target)
const noexcept
171 template<
class TARGET>
const TARGET *
176 return dynamic_cast<const TARGET*
>(
this);
187 std::lock_guard<std::mutex> scoped_lock(
m_mutex);
201 std::lock_guard<std::mutex> scoped_lock(
m_mutex);
234 std::lock_guard<std::mutex> scoped_lock(
m_mutex);
256 void move(
const std::string& at)
271 virtual std::vector<const DalObject *>
get(
const std::string& name,
bool upcast_unregistered =
true)
const = 0;
287 virtual void print(
unsigned int offset,
bool print_header, std::ostream& s)
const = 0;
290 static void p_null(std::ostream& s);
293 static void p_rm(std::ostream& s);
296 static void p_error(std::ostream& s, dunedaq::conffwk::Exception& ex);
299 void p_hdr(std::ostream& s,
unsigned int indent,
const std::string& cl,
const char * nm =
nullptr)
const;
330 return (ref ==
nullptr);
402 virtual void init(
bool init_children) = 0;
409 std::lock_guard<std::mutex> scoped_lock(this->p_registry.
m_mutex);
419 std::lock_guard<std::mutex> scoped_lock(
m_mutex);
428 _set_objects(
const std::string &name,
const std::vector<const T*> &value)
430 std::lock_guard<std::mutex> scoped_lock(
m_mutex);
433 std::vector<const ConfigObject*> v;
434 for (
auto &i : value)
435 v.push_back(&(i->config_object()));
442 get_rel_objects(
const std::string& name,
bool upcast_unregistered, std::vector<const DalObject*>& objs)
const;
446 get_algo_objects(
const std::string& name, std::vector<const DalObject*>& objs)
const;
dunedaq::conffwk::ObjectState m_state
bool is_deleted() const
Check object and return true if the object has been deleted.
const std::string * m_class_name
void throw_if_deleted() const
Represents database objects.
void set_objs(const std::string &name, const std::vector< const ConfigObject * > &o, bool skip_non_null_check=false)
Set relationship multi-value.
void move(const std::string &at)
Move object to a different database.
const std::string & UID() const noexcept
Return object identity.
ConfigObjectImpl * m_impl
void set_obj(const std::string &name, const ConfigObject *o, bool skip_non_null_check=false)
Set relationship single-value.
void rename(const std::string &new_id)
Rename object.
const std::string & class_name() const noexcept
Return object's class name.
Defines base class for cache of template objects.
bool is_superclass_of(const std::string &target, const std::string &source) noexcept
The base class for any generated DAL object.
virtual void print(unsigned int offset, bool print_header, std::ostream &s) const =0
std::string full_name() const noexcept
void increment_created() noexcept
void p_hdr(std::ostream &s, unsigned int indent, const std::string &cl, const char *nm=nullptr) const
print object headers
bool castable(const std::string &target) const noexcept
static bool is_null(const DalObject *ref) noexcept
check a pointer on DAL object is null
const TARGET * cast() const noexcept
Casts object to different class.
static void p_null(std::ostream &s)
print "(null)"
std::string p_UID
Is used for template objects (see dqm_conffwk)
static void p_rm(std::ostream &s)
print "(deleted object)"
virtual void init(bool init_children)=0
virtual std::vector< const DalObject * > get(const std::string &name, bool upcast_unregistered=true) const =0
DalRegistry & registry() const noexcept
void throw_init_ex(dunedaq::conffwk::Exception &ex)
throw object initialisation exception (i.e.
void increment_read() noexcept
const std::string & class_name() const noexcept
static void p_error(std::ostream &s, dunedaq::conffwk::Exception &ex)
print error text
DalObject & operator=(const DalObject &)=delete
bool get_rel_objects(const std::string &name, bool upcast_unregistered, std::vector< const DalObject * > &objs) const
Read relationship values as DAL objects using DAL factory.
DalObject(const DalObject &)=delete
std::ostream & print_object(std::ostream &s) const
print object details
void rename(const std::string &new_id)
static void throw_get_ex(const std::string &what, const std::string &class_name, const DalObject *obj)
throw exception in generated get method (i.e.
void _set_objects(const std::string &name, const std::vector< const T * > &value)
Helper method for generated set multi-value relationship methods.
Configuration & configuration() const noexcept
DalObject(DalRegistry &db, const ConfigObject &o) noexcept
void set(const ConfigObject &o) noexcept
bool castable(const std::string *target) const noexcept
const ConfigObject & config_object() const
const std::string & UID() const noexcept
std::mutex m_mutex
Used to protect changes of DAL object.
void _set_object(const std::string &name, const T *value)
Helper method for generated set single-value relationship methods.
DalRegistry & p_registry
Configuration object.
bool p_was_read
is true, if the object was read
bool get_algo_objects(const std::string &name, std::vector< const DalObject * > &objs) const
Run algorithm and return result as DAL objects using DAL factory.
ConfigObject p_obj
Config object used by given template object.
void check_init() const
Check and initialize object if necessary.
friend std::ostream & operator<<(std::ostream &s, const DalObject *obj)
void move(const std::string &at)
DalRegistry: A registry of DalObjects It provides a single interface to create, cache and manage DalO...
Configuration & configuration()
std::ostream & operator<<(std::ostream &, const ConfigurationChange &)