ATLAS Offline Software
SegMemSvc.h
Go to the documentation of this file.
1 /* -*- C++ -*- */
2 
3 /*
4  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 #ifndef CONTROL_STOREGATE_SEGMEMSVC_H
8 #define CONTROL_STOREGATE_SEGMEMSVC_H 1
9 
10 #include "GaudiKernel/Service.h"
11 #include "GaudiKernel/IIncidentListener.h"
12 #include "GaudiKernel/IIncidentSvc.h"
13 #include "GaudiKernel/MsgStream.h"
14 #include "GaudiKernel/ServiceHandle.h"
15 #include "AthAllocators/Arena.h"
16 
17 #include <string>
18 
19 
28 class SegMemSvc: public extends<Service, IIncidentListener> {
29 
30 public:
31 
32 
33  enum LIFETIME {
34  EVENT = 0,
35  JOB = 1,
36  INCIDENT = 2
37  };
38 
39  virtual StatusCode initialize() override;
40  virtual void handle(const Incident&) override;
41 
44 
45 
46 
50  template <typename T>
51  T* allocate(SegMemSvc::LIFETIME, bool cache=true);
52 
54  template <typename T>
55  bool del(T*);
56 
58 
59 
60  SegMemSvc( const std::string& name, ISvcLocator* svc );
61 
62  // Destructor.
63  virtual ~SegMemSvc();
64 
65 
66 private:
67 
69 
71  inline std::string cvt(SegMemSvc::LIFETIME life) {
72  switch (life) {
73  case SegMemSvc::EVENT : return "EVENT";
74  case SegMemSvc::JOB : return "JOB";
75  case SegMemSvc::INCIDENT: return "INCIDENT";
76  }
77  return "UNKNOWN";
78  }
79 
83 
84 
85 };
86 
87 
88 #include "StoreGate/SegMemSvc.icc"
89 
90 #endif
SegMemSvc::LIFETIME
LIFETIME
Definition: SegMemSvc.h:33
SegMemSvc.icc
SegMemSvc::~SegMemSvc
virtual ~SegMemSvc()
Definition: SegMemSvc.cxx:30
SegMemSvc::m_arena_inc
SG::Arena m_arena_inc
Definition: SegMemSvc.h:82
SegMemSvc::handle
virtual void handle(const Incident &) override
Definition: SegMemSvc.cxx:58
SegMemSvc::del
bool del(T *)
free memory managed by arena
SegMemSvc::JOB
@ JOB
Definition: SegMemSvc.h:35
SegMemSvc::m_ahead_inc
SG::ArenaHeader m_ahead_inc
Definition: SegMemSvc.h:81
SG::ArenaHeader
Proxy for a group of Arenas.
Definition: ArenaHeader.h:54
SegMemSvc::allocate
T * allocate(SegMemSvc::LIFETIME, bool cache=true)
Get pointer to an area in the arena, used for new with placement.
SegMemSvc::initialize
virtual StatusCode initialize() override
Definition: SegMemSvc.cxx:39
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SegMemSvc::INCIDENT
@ INCIDENT
Definition: SegMemSvc.h:36
SegMemSvc::m_ahead_evt
SG::ArenaHeader m_ahead_evt
Definition: SegMemSvc.h:81
SG::Arena
Collection of memory allocators with a common lifetime,.
Definition: Arena.h:238
SegMemSvc::m_arena_evt
SG::Arena m_arena_evt
Definition: SegMemSvc.h:82
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
SegMemSvc
Service to access an arena caching allocator.
Definition: SegMemSvc.h:28
SegMemSvc::EVENT
@ EVENT
Definition: SegMemSvc.h:34
SegMemSvc::m_arena_job
SG::Arena m_arena_job
Definition: SegMemSvc.h:82
Arena.h
Collection of memory allocators with a common lifetime, plus subsystem summary.
SegMemSvc::SegMemSvc
SegMemSvc(const std::string &name, ISvcLocator *svc)
Definition: SegMemSvc.cxx:18
SegMemSvc::cvt
std::string cvt(SegMemSvc::LIFETIME life)
helper to for printout
Definition: SegMemSvc.h:71
SegMemSvc::m_ahead_job
SG::ArenaHeader m_ahead_job
three arenas for different lifetimes
Definition: SegMemSvc.h:81
SegMemSvc::p_incSvc
ServiceHandle< IIncidentSvc > p_incSvc
Definition: SegMemSvc.h:68
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
ServiceHandle< IIncidentSvc >