43 [](
auto &data) { return data ? std::move(data) : std::move(std::make_unique<mru_listE>(50)); });
57 [](
auto &data) { return data ? std::move(data) : std::move(std::make_unique<mru_listY>(50)); });
93 return result->m_data;
94 return YType(
nullptr);
107 return result->m_data;
108 return EType(
nullptr);
119 auto yWithMarker = std::make_shared<TypeWithMarker<YType>>(
reinterpret_cast<std::uintptr_t
>(
index));
120 yWithMarker->m_data = std::move(data);
133 auto eWithMarker = std::make_shared<TypeWithMarker<EType>>(
reinterpret_cast<std::uintptr_t
>(
index));
134 eWithMarker->m_data = std::move(data);
148 data->deleteIndex(
reinterpret_cast<std::uintptr_t
>(
index));
155 data->deleteIndex(
reinterpret_cast<std::uintptr_t
>(
index));
std::map< DeltaEMode::Type, std::string > index
Poco::RWLock m_changeMruListsMutexE
Mutex when adding entries in the MRU list.
std::vector< std::unique_ptr< mru_listE > > m_bufferedDataE
The most-recently-used list of dataE histograms.
std::vector< std::unique_ptr< mru_listY > > m_bufferedDataY
The most-recently-used list of dataY histograms.
void insertY(size_t thread_num, YType data, const EventList *index)
Insert a new histogram into the MRU.
Kernel::cow_ptr< HistogramData::HistogramY > YType
EType findE(size_t thread_num, const EventList *index)
Find a Y histogram in the MRU.
void insertE(size_t thread_num, EType data, const EventList *index)
Insert a new histogram into the MRU.
Kernel::cow_ptr< HistogramData::HistogramE > EType
Poco::RWLock m_changeMruListsMutexY
void ensureEnoughBuffersE(size_t thread_num) const
This function makes sure that there are enough data buffers (MRU's) for E for the number of threads r...
YType findY(size_t thread_num, const EventList *index)
Find a Y histogram in the MRU.
size_t MRUSize() const
Return how many entries in the Y MRU list are used.
void deleteIndex(const EventList *index)
Delete any entries in the MRU at the given index.
void clear()
Clear all the data in the MRU buffers.
void ensureEnoughBuffersY(size_t thread_num) const
This function makes sure that there are enough data buffers (MRU's) for Y for the number of threads r...
Implements a copy on write data template.