74 for (
size_t i(0); i < domains.size(); ++i) {
75 const auto& dom = domains[i];
76 for (
const auto& class_name : dom) {
77 m_class_domain_map[&conffwk::DalFactory::instance().get_known_class_name_ref(class_name)] = i;
78 TLOG_DEBUG(9) <<
" - " << class_name <<
" : " << i;
88 for(
const auto& [uid, ptr] : domain.cache ) {
101 auto it_dom =
m_class_domain_map.find(&DalFactory::instance().get_known_class_name_ref(obj.class_name()));
110 DalObject*& result(domain.cache[obj.m_impl->m_id]);
111 if (result ==
nullptr) {
113 result = DalFactory::instance().make(*
this, obj, upcast_unregistered);
117 std::lock_guard<std::mutex> scoped_lock(result->
m_mutex);
126std::vector<const DalObject*>
129 std::vector<const DalObject*> result;
141 const std::string& class_name,
142 const std::vector<std::string>& modified,
143 const std::vector<std::string>& removed,
144 const std::vector<std::string>& created) {
147 auto it_dom =
m_class_domain_map.find(&DalFactory::instance().get_known_class_name_ref(class_name));
157 for(
const auto& [uid, ptr] : domain.cache ) {
166 ( std::find(modified.begin(), modified.end(), ptr->UID()) != modified.end() ) or
167 ( std::find(removed.begin(), removed.end(), ptr->UID()) != removed.end() ) or
168 ( std::find(created.begin(), created.end(), ptr->UID()) != created.end() )
174 std::lock_guard<std::mutex> scoped_lock(domain.mutex);
175 ptr->p_was_read =
false;
186 std::lock_guard<std::mutex> scoped_lock(domain.mutex);
188 for(
const auto& [
id, ptr] : domain.cache ) {
189 ptr->p_was_read =
false;
200 auto it_dom =
m_class_domain_map.find(&DalFactory::instance().get_known_class_name_ref(class_name));
209 auto it = domain.cache.find(old_id);
210 if (it == domain.cache.end())
213 domain.cache[new_id] = it->second;
214 domain.cache.erase(it);
216 std::lock_guard<std::mutex> scoped_lock(it->second->m_mutex);
217 it->second->p_UID = new_id;
Represents database objects.
ConfigObjectImpl * m_impl
std::deque< std::set< std::string > > find_class_domains()
bool is_superclass_of(const std::string &target, const std::string &source) noexcept
The base class for any generated DAL object.
void set(const ConfigObject &o) noexcept
std::mutex m_mutex
Used to protect changes of DAL object.
ConfigObject p_obj
Config object used by given template object.
DalObject * get(ConfigObject &obj, bool upcast_unregistered=false)
void update(const std::vector< std::string > &modified, const std::vector< std::string > &removed, const std::vector< std::string > &created)
Update cache of objects in case of modification.
void _rename_object(std::string class_name, std::string old_id, std::string new_id)
Rename object of given template class (multi-thread unsafe).
void clear()
Clear the content of the registy.
DalRegistry(Configuration &confdb)
Construct a new Dal Registry object.
std::unordered_map< uint, DalDomain > m_cache_domains
void unread_all()
Set the status of all objects in cache to unread.
conffwk::fmap< uint > m_class_domain_map
void update_class_domain_map()
Try to access non-existent object or class.
#define TLOG_DEBUG(lvl,...)