ATLAS Offline Software
Loading...
Searching...
No Matches
EventContainers::InternalOffline Class Referencefinal

#include <InternalOffline.h>

Inheritance diagram for EventContainers::InternalOffline:
Collaboration diagram for EventContainers::InternalOffline:

Public Types

typedef EventContainers::hashPair< void > hashPair
typedef std::vector< hashPair >::const_iterator InternalConstItr
typedef void deleter_f(const void *p)

Public Member Functions

 InternalOffline (size_t max)
virtual ~InternalOffline ()=default
virtual InternalConstItr cbegin () const override
virtual InternalConstItr cend () const override
virtual InternalConstItr indexFind (IdentifierHash hashId) const override
virtual const std::vector< hashPair > & getAllHashPtrPair () const override
virtual bool tryAddFromCache (IdentifierHash hashId, EventContainers::IDC_WriteHandleBase &lock) override
virtual bool tryAddFromCache (IdentifierHash hashId) override
virtual void wait () const override
virtual std::vector< IdentifierHashgetAllCurrentHashes () const override
virtual size_t numberOfCollections () const override
virtual void cleanUp (deleter_f *deleter) noexcept override
virtual size_t fullSize () const noexcept override
virtual StatusCode fetchOrCreate (IdentifierHash hashId) override
virtual StatusCode fetchOrCreate (const std::vector< IdentifierHash > &hashIds) override
virtual bool insert (IdentifierHash hashId, const void *ptr) override
virtual const void * findIndexPtr (IdentifierHash hashId) const noexcept override
virtual StatusCode addLock (IdentifierHash hashId, const void *ptr) override
virtual void * removeCollection (IdentifierHash hashId) override
virtual void destructor (deleter_f *) noexcept override

Private Attributes

std::vector< I_InternalIDC::hashPairm_map
size_t m_maximumSize

Detailed Description

Definition at line 18 of file InternalOffline.h.

Member Typedef Documentation

◆ deleter_f

typedef void EventContainers::I_InternalIDC::deleter_f(const void *p)
inherited

Definition at line 14 of file I_InternalIDC.h.

◆ hashPair

Definition at line 37 of file I_InternalIDC.h.

◆ InternalConstItr

Definition at line 38 of file I_InternalIDC.h.

Constructor & Destructor Documentation

◆ InternalOffline()

InternalOffline::InternalOffline ( size_t max)

Definition at line 11 of file InternalOffline.cxx.

12 //Check optimization assumptions
13 static_assert(std::is_trivially_copyable<hashPair>::value);
14 static_assert(std::is_trivially_destructible<hashPair>::value);
15 static_assert(std::is_trivially_copyable<IdentifierHash>::value);
16 static_assert(std::is_trivially_destructible<IdentifierHash>::value);
17}
#define max(a, b)
Definition cfImp.cxx:41

◆ ~InternalOffline()

virtual EventContainers::InternalOffline::~InternalOffline ( )
virtualdefault

Member Function Documentation

◆ addLock()

StatusCode InternalOffline::addLock ( IdentifierHash hashId,
const void * ptr )
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 90 of file InternalOffline.cxx.

90 {
91 bool added = insert(hashId, ptr);
92 if (!added) [[unlikely]] {
93 throw std::runtime_error("IDC WARNING Deletion shouldn't occur in addLock paradigm");
94 }
95 return StatusCode::SUCCESS;
96}
virtual bool insert(IdentifierHash hashId, const void *ptr) override
#define unlikely(x)

◆ cbegin()

InternalConstItr InternalOffline::cbegin ( ) const
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 50 of file InternalOffline.cxx.

50 {
51 return m_map.cbegin();
52}
std::vector< I_InternalIDC::hashPair > m_map

◆ cend()

InternalConstItr InternalOffline::cend ( ) const
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 43 of file InternalOffline.cxx.

43 {
44 return m_map.cend();
45}

◆ cleanUp()

void InternalOffline::cleanUp ( deleter_f * deleter)
overridevirtualnoexcept

Implements EventContainers::I_InternalIDC.

Definition at line 65 of file InternalOffline.cxx.

65 {
66 for(const auto& x : m_map) deleter(x.second);
67 m_map.clear();
68}
#define x
IPayloadDeleter & deleter()
Return a reference to the payload deleter object.

◆ destructor()

void InternalOffline::destructor ( deleter_f * deleter)
overridevirtualnoexcept

Implements EventContainers::I_InternalIDC.

Definition at line 114 of file InternalOffline.cxx.

114 {
115 for(const auto& x : m_map) deleter(x.second);
116}

◆ fetchOrCreate() [1/2]

StatusCode InternalOffline::fetchOrCreate ( const std::vector< IdentifierHash > & hashIds)
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 109 of file InternalOffline.cxx.

110{
111 throw std::runtime_error("Not implemented in offline mode");
112}

◆ fetchOrCreate() [2/2]

StatusCode InternalOffline::fetchOrCreate ( IdentifierHash hashId)
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 106 of file InternalOffline.cxx.

106 {
107 throw std::runtime_error("Not implemented in offline mode");
108}

◆ findIndexPtr()

const void * InternalOffline::findIndexPtr ( IdentifierHash hashId) const
overridevirtualnoexcept

Implements EventContainers::I_InternalIDC.

Definition at line 84 of file InternalOffline.cxx.

84 {
85 auto itr = indexFind(hashId);
86 if(itr != m_map.end()) return itr->second;
87 return nullptr;
88}
virtual InternalConstItr indexFind(IdentifierHash hashId) const override

◆ fullSize()

virtual size_t EventContainers::InternalOffline::fullSize ( ) const
inlineoverridevirtualnoexcept

Implements EventContainers::I_InternalIDC.

Definition at line 32 of file InternalOffline.h.

32{return m_maximumSize;}

◆ getAllCurrentHashes()

std::vector< IdentifierHash > InternalOffline::getAllCurrentHashes ( ) const
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 33 of file InternalOffline.cxx.

33 {
34 std::vector<IdentifierHash> ids;
35 ids.reserve(m_map.size());
36 for(auto &x : m_map) {
37 ids.emplace_back(x.first);
38 }
39 return ids;
40}

◆ getAllHashPtrPair()

const std::vector< I_InternalIDC::hashPair > & InternalOffline::getAllHashPtrPair ( ) const
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 47 of file InternalOffline.cxx.

47{ return m_map; }

◆ indexFind()

InternalConstItr InternalOffline::indexFind ( IdentifierHash hashId) const
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 54 of file InternalOffline.cxx.

54 {
55 auto itr = std::lower_bound( m_map.cbegin(), m_map.cend(), hashId.value(), [](const hashPair &lhs, IdentifierHash::value_type rhs) -> bool { return lhs.first < rhs; } );
56 if(itr!= m_map.cend() && itr->first==hashId) return itr;
57 return m_map.cend();
58// return std::find_if(m_map.begin(), m_map.end(), [hashId](const hashPair &lhs) -> bool { return lhs.first == hashId; });
59}
EventContainers::hashPair< void > hashPair
constexpr value_type value() const
unsigned int value_type

◆ insert()

bool InternalOffline::insert ( IdentifierHash hashId,
const void * ptr )
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 70 of file InternalOffline.cxx.

70 {
71 if(m_map.empty() || m_map.back().first < hashId){
72 m_map.emplace_back(hashId, ptr);
73 return true;
74 }
75 auto itr = std::lower_bound( m_map.begin(), m_map.end(), hashId.value(), [](const hashPair &lhs, IdentifierHash::value_type rhs) -> bool { return lhs.first < rhs; } );
76 if(itr == std::end(m_map) || itr->first != hashId)
77 {
78 m_map.emplace(itr, hashId, ptr);
79 return true;
80 }
81 return false;
82}

◆ numberOfCollections()

size_t InternalOffline::numberOfCollections ( ) const
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 61 of file InternalOffline.cxx.

61 {
62 return m_map.size();
63}

◆ removeCollection()

void * InternalOffline::removeCollection ( IdentifierHash hashId)
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 98 of file InternalOffline.cxx.

98 {
99 auto itr = std::lower_bound( m_map.begin(), m_map.end(), hashId.value(), [](hashPair &lhs, IdentifierHash::value_type rhs) -> bool { return lhs.first < rhs; } );
100 if(itr== m_map.end() || itr->first!=hashId) return nullptr;
101 void* ptr = const_cast< void* > (itr->second);
102 m_map.erase(itr);
103 return ptr;
104}
void * ptr(T *p)
Definition SGImplSvc.cxx:74

◆ tryAddFromCache() [1/2]

bool InternalOffline::tryAddFromCache ( IdentifierHash hashId)
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 24 of file InternalOffline.cxx.

25{
26 return indexFind(hash) != m_map.cend();//No Cache in offline mode
27}

◆ tryAddFromCache() [2/2]

bool InternalOffline::tryAddFromCache ( IdentifierHash hashId,
EventContainers::IDC_WriteHandleBase & lock )
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 20 of file InternalOffline.cxx.

20 {
21 return indexFind(hash) != m_map.cend();//No Cache in offline mode
22}

◆ wait()

void InternalOffline::wait ( ) const
overridevirtual

Implements EventContainers::I_InternalIDC.

Definition at line 29 of file InternalOffline.cxx.

29 {
30 //No need to wait in offline, deliberately empty method
31}

Member Data Documentation

◆ m_map

std::vector<I_InternalIDC::hashPair> EventContainers::InternalOffline::m_map
private

Definition at line 41 of file InternalOffline.h.

◆ m_maximumSize

size_t EventContainers::InternalOffline::m_maximumSize
private

Definition at line 42 of file InternalOffline.h.


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