DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::listrev::ListStorage Class Reference

#include <ListStorage.hpp>

Public Member Functions

 ListStorage ()
 
bool has_list (const int &id) const
 
IntList get_list (const int &id) const
 
void add_list (IntList list, bool ignoreDuplicates=false)
 
size_t size () const
 
void set_capacity (const size_t &capacity)
 
size_t capacity () const
 
void flush ()
 

Private Attributes

std::map< int, IntListm_lists
 
std::mutex m_lists_mutex
 
size_t m_capacity { 1000 }
 

Detailed Description

Definition at line 22 of file ListStorage.hpp.

Constructor & Destructor Documentation

◆ ListStorage()

dunedaq::listrev::ListStorage::ListStorage ( )
inline

Definition at line 25 of file ListStorage.hpp.

25{}

Member Function Documentation

◆ add_list()

void dunedaq::listrev::ListStorage::add_list ( IntList list,
bool ignoreDuplicates = false )

Definition at line 31 of file ListStorage.cpp.

32{
33 std::lock_guard<std::mutex> lk(m_lists_mutex);
34 if (m_lists.count(list.list_id) && !ignoreDuplicates) {
35 throw ListExists(ERS_HERE, list.list_id);
36 }
37 m_lists[list.list_id] = list;
38
39 while (m_lists.size() > m_capacity) {
40 m_lists.erase(m_lists.begin());
41 }
42}
#define ERS_HERE
std::map< int, IntList > m_lists

◆ capacity()

size_t dunedaq::listrev::ListStorage::capacity ( ) const
inline

Definition at line 33 of file ListStorage.hpp.

33{ return m_capacity; }

◆ flush()

void dunedaq::listrev::ListStorage::flush ( )

Definition at line 52 of file ListStorage.cpp.

53{
54 std::lock_guard<std::mutex> lk(m_lists_mutex);
55 m_lists.clear();
56}

◆ get_list()

dunedaq::listrev::IntList dunedaq::listrev::ListStorage::get_list ( const int & id) const

Definition at line 20 of file ListStorage.cpp.

21{
22 std::lock_guard<std::mutex> lk(m_lists_mutex);
23 if (!m_lists.count(id)) {
24 throw ListNotFound(ERS_HERE, id);
25 }
26
27 return m_lists.at(id);
28}

◆ has_list()

bool dunedaq::listrev::ListStorage::has_list ( const int & id) const

Definition at line 13 of file ListStorage.cpp.

14{
15 std::lock_guard<std::mutex> lk(m_lists_mutex);
16 return m_lists.count(id);
17}

◆ set_capacity()

void dunedaq::listrev::ListStorage::set_capacity ( const size_t & capacity)
inline

Definition at line 32 of file ListStorage.hpp.

◆ size()

size_t dunedaq::listrev::ListStorage::size ( ) const

Definition at line 45 of file ListStorage.cpp.

46{
47 std::lock_guard<std::mutex> lk(m_lists_mutex);
48 return m_lists.size();
49}

Member Data Documentation

◆ m_capacity

size_t dunedaq::listrev::ListStorage::m_capacity { 1000 }
private

Definition at line 39 of file ListStorage.hpp.

39{ 1000 };

◆ m_lists

std::map<int, IntList> dunedaq::listrev::ListStorage::m_lists
private

Definition at line 37 of file ListStorage.hpp.

◆ m_lists_mutex

std::mutex dunedaq::listrev::ListStorage::m_lists_mutex
mutableprivate

Definition at line 38 of file ListStorage.hpp.


The documentation for this class was generated from the following files: