ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Event
EventContainers
EventContainers
InternalOfflineFast.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef EVENTCONTAINERS_INTERNALOFFLINEFAST_H
6
#define EVENTCONTAINERS_INTERNALOFFLINEFAST_H
7
#include "
EventContainers/I_InternalIDC.h
"
8
#include "
CxxUtils/checker_macros.h
"
9
#include <atomic>
10
#include <mutex>
11
12
namespace
EventContainers
{
13
/*
14
This class implements the IdentifiableContainer code for the offline case.
15
This class may use excess memory for fast random access purposes
16
17
Fast random access.
18
*/
19
class
InternalOfflineFast
final :
public
I_InternalIDC
{
20
public
:
21
InternalOfflineFast
(
size_t
max
);
22
virtual
~InternalOfflineFast
()=
default
;
23
virtual
InternalConstItr
cbegin
()
const override
;
24
virtual
InternalConstItr
cend
()
const override
;
25
virtual
InternalConstItr
indexFind
(
IdentifierHash
hashId )
const override
;
26
virtual
const
std::vector < hashPair >&
getAllHashPtrPair
()
const override
;
27
virtual
bool
tryAddFromCache
(
IdentifierHash
hashId,
EventContainers::IDC_WriteHandleBase
&
lock
)
override
;
28
virtual
bool
tryAddFromCache
(
IdentifierHash
hashId)
override
;
29
virtual
void
wait
()
const override
;
30
virtual
std::vector<IdentifierHash>
getAllCurrentHashes
()
const override
;
31
virtual
size_t
numberOfCollections
()
const override
;
32
virtual
void
cleanUp
(
deleter_f
* deleter)
noexcept
override
;
33
virtual
size_t
fullSize
()
const
noexcept
override
{
return
m_fullMap
.size();}
34
virtual
StatusCode
fetchOrCreate
(
IdentifierHash
hashId)
override
;
35
virtual
StatusCode
fetchOrCreate
(
const
std::vector<IdentifierHash> &hashIds)
override
;
36
virtual
bool
insert
(
IdentifierHash
hashId,
const
void
* ptr)
override
;
37
virtual
const
void
*
findIndexPtr
(
IdentifierHash
hashId)
const
noexcept
override
;
38
virtual
StatusCode
addLock
(
IdentifierHash
hashId,
const
void
* ptr)
override
;
39
virtual
void
*
removeCollection
(
IdentifierHash
hashId )
override
;
40
virtual
void
destructor
(
deleter_f
*)
noexcept
override
;
41
private
:
42
mutable
std::vector<I_InternalIDC::hashPair> m_map
ATLAS_THREAD_SAFE
;
43
std::vector<const void*>
m_fullMap
;
44
mutable
std::mutex m_waitMutex
ATLAS_THREAD_SAFE
;
45
mutable
std::atomic<bool> m_needsupdate
ATLAS_THREAD_SAFE
;
//These mutables are carefully thought out, do not change
46
};
47
48
}
49
#endif
lock
virtual void lock()=0
Interface to allow an object to lock itself when made const in SG.
I_InternalIDC.h
max
#define max(a, b)
Definition
cfImp.cxx:41
checker_macros.h
Define macros for attributes used to control the static checker.
EventContainers::IDC_WriteHandleBase
Definition
IDC_WriteHandleBase.h:13
EventContainers::I_InternalIDC
Definition
I_InternalIDC.h:35
EventContainers::I_InternalIDC::InternalConstItr
std::vector< hashPair >::const_iterator InternalConstItr
Definition
I_InternalIDC.h:38
EventContainers::I_InternalIDC::deleter_f
void deleter_f(const void *p)
Definition
I_InternalIDC.h:14
EventContainers::InternalOfflineFast::insert
virtual bool insert(IdentifierHash hashId, const void *ptr) override
Definition
InternalOfflineFast.cxx:87
EventContainers::InternalOfflineFast::cend
virtual InternalConstItr cend() const override
Definition
InternalOfflineFast.cxx:46
EventContainers::InternalOfflineFast::getAllHashPtrPair
virtual const std::vector< hashPair > & getAllHashPtrPair() const override
Definition
InternalOfflineFast.cxx:51
EventContainers::InternalOfflineFast::findIndexPtr
virtual const void * findIndexPtr(IdentifierHash hashId) const noexcept override
Definition
InternalOfflineFast.cxx:94
EventContainers::InternalOfflineFast::getAllCurrentHashes
virtual std::vector< IdentifierHash > getAllCurrentHashes() const override
Definition
InternalOfflineFast.cxx:35
EventContainers::InternalOfflineFast::fetchOrCreate
virtual StatusCode fetchOrCreate(IdentifierHash hashId) override
Definition
InternalOfflineFast.cxx:114
EventContainers::InternalOfflineFast::wait
virtual void wait() const override
Definition
InternalOfflineFast.cxx:24
EventContainers::InternalOfflineFast::tryAddFromCache
virtual bool tryAddFromCache(IdentifierHash hashId, EventContainers::IDC_WriteHandleBase &lock) override
Definition
InternalOfflineFast.cxx:15
EventContainers::InternalOfflineFast::cbegin
virtual InternalConstItr cbegin() const override
Definition
InternalOfflineFast.cxx:57
EventContainers::InternalOfflineFast::indexFind
virtual InternalConstItr indexFind(IdentifierHash hashId) const override
Definition
InternalOfflineFast.cxx:62
EventContainers::InternalOfflineFast::m_fullMap
std::vector< const void * > m_fullMap
Definition
InternalOfflineFast.h:43
EventContainers::InternalOfflineFast::removeCollection
virtual void * removeCollection(IdentifierHash hashId) override
Definition
InternalOfflineFast.cxx:107
EventContainers::InternalOfflineFast::destructor
virtual void destructor(deleter_f *) noexcept override
Definition
InternalOfflineFast.cxx:122
EventContainers::InternalOfflineFast::numberOfCollections
virtual size_t numberOfCollections() const override
Definition
InternalOfflineFast.cxx:69
EventContainers::InternalOfflineFast::InternalOfflineFast
InternalOfflineFast(size_t max)
Definition
InternalOfflineFast.cxx:12
EventContainers::InternalOfflineFast::fullSize
virtual size_t fullSize() const noexcept override
Definition
InternalOfflineFast.h:33
EventContainers::InternalOfflineFast::cleanUp
virtual void cleanUp(deleter_f *deleter) noexcept override
Definition
InternalOfflineFast.cxx:74
EventContainers::InternalOfflineFast::ATLAS_THREAD_SAFE
std::vector< I_InternalIDC::hashPair > m_map ATLAS_THREAD_SAFE
Definition
InternalOfflineFast.h:42
EventContainers::InternalOfflineFast::~InternalOfflineFast
virtual ~InternalOfflineFast()=default
EventContainers::InternalOfflineFast::addLock
virtual StatusCode addLock(IdentifierHash hashId, const void *ptr) override
Definition
InternalOfflineFast.cxx:99
IdentifierHash
This is a "hash" representation of an Identifier.
Definition
IdentifierHash.h:25
deleter_f
void deleter_f(const void *p)
Definition
deleter.h:13
const
EventContainers
Definition
T_AthenaPoolCreateFuncs.h:33
Generated on
for ATLAS Offline Software by
1.17.0