25 std::scoped_lock lock (m_waitMutex);
26 if(m_needsupdate.load(std::memory_order_acquire) ==
false)
return;
30 m_map.emplace_back(
pair.first,
pair.second);
33 m_needsupdate.store(
false, std::memory_order_release);
37 std::vector<IdentifierHash> ids;
39 if(m_needsupdate.load(std::memory_order_acquire) ==
true){
41 ids.emplace_back(
pair.first);
45 for(
const auto &
pair : m_map){
46 ids.emplace_back(
pair.first);
54 if(m_needsupdate.load(std::memory_order_acquire))
wait();
59 if(m_needsupdate.load(std::memory_order_acquire))
wait();
65 if(m_needsupdate.load(std::memory_order_acquire))
wait();
66 return m_map.cbegin();
70 if(m_needsupdate.load(std::memory_order_acquire))
wait();
72 if(itr!= m_map.cend() && itr->first==hashId)
return itr;
84 m_needsupdate.store(
false, std::memory_order_release);
89 if(mapptr!=
nullptr)
return false;
91 m_needsupdate.store(
true, std::memory_order_relaxed);
102 bool added =
insert(hashId, ptr);
104 throw std::runtime_error(
"IDC WARNING Deletion shouldn't occur in addLock paradigm");
106 return StatusCode::SUCCESS;
112 void* ptr =
const_cast< void*
> (
search->second);
114 m_needsupdate.store(
true, std::memory_order_relaxed);
119 throw std::runtime_error(
"Not implemented in offline mode");
123 throw std::runtime_error(
"Not implemented in offline mode");
127 if(!m_needsupdate.load(std::memory_order_acquire))
for(
const auto&
x : m_map) deleter(
x.second);
I_InternalIDC::InternalConstItr InternalConstItr
std::vector< hashPair >::const_iterator InternalConstItr
EventContainers::hashPair< void > hashPair
void deleter_f(const void *p)
virtual InternalConstItr indexFind(IdentifierHash hashId) const override
virtual InternalConstItr cend() const override
virtual size_t numberOfCollections() const override
virtual void wait() const override
virtual void cleanUp(deleter_f *deleter) noexcept override
virtual void * removeCollection(IdentifierHash hashId) override
InternalOfflineMap(size_t max)
virtual bool tryAddFromCache(IdentifierHash hashId, EventContainers::IDC_WriteHandleBase &lock) override
std::unordered_map< IdentifierHash::value_type, const void * > m_fullMap
virtual std::vector< IdentifierHash > getAllCurrentHashes() const override
virtual const void * findIndexPtr(IdentifierHash hashId) const noexcept override
virtual void destructor(deleter_f *) noexcept override
virtual const std::vector< hashPair > & getAllHashPtrPair() const override
virtual InternalConstItr cbegin() const override
virtual bool insert(IdentifierHash hashId, const void *ptr) override
virtual StatusCode fetchOrCreate(IdentifierHash hashId) override
virtual StatusCode addLock(IdentifierHash hashId, const void *ptr) override
This is a "hash" representation of an Identifier.
void search(TDirectory *td, const std::string &s, std::string cwd, node *n)
recursive directory search for TH1 and TH2 and TProfiles
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.