ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Control
AthenaIPCTools
src
AthenaSharedMemoryTool.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef ATHENASHAREDMEMORYTOOL_H
6
#define ATHENASHAREDMEMORYTOOL_H
7
12
13
#include "GaudiKernel/ServiceHandle.h"
14
#include "
AthenaBaseComps/AthAlgTool.h
"
15
#include "
AthenaKernel/IAthenaIPCTool.h
"
16
#include "
AthenaKernel/InputFileIncidentGuard.h
"
17
18
#include <memory>
19
#include <optional>
20
#include <set>
21
#include <string>
22
23
// Forward declarations.
24
class
IIncidentSvc;
25
26
namespace
boost
{
27
namespace
interprocess
{
28
class
shared_memory_object;
29
class
mapped_region;
30
}
31
}
32
36
class
AthenaSharedMemoryTool
:
public
extends<::AthAlgTool, IAthenaIPCTool> {
37
public
:
39
AthenaSharedMemoryTool
(
const
std::string&
type
,
const
std::string& name,
const
IInterface* parent);
41
virtual
~AthenaSharedMemoryTool
();
42
44
virtual
StatusCode
initialize
()
override
;
45
virtual
StatusCode
stop
()
override
;
46
virtual
StatusCode
finalize
()
override
;
47
48
virtual
StatusCode
makeServer
(
int
num,
const
std::string& streamPortSuffix)
override
;
49
virtual
bool
isServer
()
const override
;
50
virtual
StatusCode
makeClient
(
int
num, std::string& streamPortSuffix)
override
;
51
virtual
bool
isClient
()
const override
;
52
53
virtual
StatusCode putEvent
ATLAS_NOT_THREAD_SAFE
(
long
eventNumber,
const
void
* source,
size_t
nbytes,
unsigned
int
status)
const override
;
54
virtual
StatusCode
getLockedEvent
(
void
** target,
unsigned
int
& status)
const override
;
55
virtual
StatusCode
lockEvent
(
long
eventNumber)
const override
;
56
57
virtual
StatusCode
putObject
(
const
void
* source,
size_t
nbytes,
int
num = 0)
override
;
58
virtual
StatusCode
getObject
(
void
** target,
size_t
& nbytes,
int
num = 0)
override
;
59
virtual
StatusCode
clearObject
(
const
char
** tokenString,
int
& num)
override
;
60
virtual
StatusCode
lockObject
(
const
char
* tokenString,
int
num = 0)
override
;
61
62
private
:
63
Gaudi::Property<std::string>
m_sharedMemory
{
this
,
"SharedMemoryName"
, {}};
64
Gaudi::Property<size_t>
m_maxSize
{
this
,
"SharedMemoryObjectSize"
, 64 * 1024 * 1024,
"Maximum shared memory object size in B (default = 64 MB)"
};
65
Gaudi::Property<int>
m_maxDataClients
{
this
,
"SharedMemoryClientSize"
, 256,
"Maximum number of clients (default = 256)"
};
66
67
int
m_num
{-1};
68
int
m_lastClient
{-1};
69
std::set<int>
m_dataClients
;
70
std::unique_ptr<boost::interprocess::mapped_region>
m_payload
;
71
std::unique_ptr<boost::interprocess::mapped_region>
m_status
;
72
long
m_fileSeqNumber
{0};
73
bool
m_isServer
{
false
};
74
bool
m_isClient
{
false
};
75
ServiceHandle<IIncidentSvc>
m_incidentSvc
;
76
mutable
std::optional<InputFileIncidentGuard> m_inputFileGuard
ATLAS_THREAD_SAFE
;
77
};
78
79
#endif
AthAlgTool.h
IAthenaIPCTool.h
InputFileIncidentGuard.h
RAII guard that guarantees a matching end-incident for every begin-incident.
AthenaSharedMemoryTool::m_payload
std::unique_ptr< boost::interprocess::mapped_region > m_payload
Definition
AthenaSharedMemoryTool.h:70
AthenaSharedMemoryTool::lockEvent
virtual StatusCode lockEvent(long eventNumber) const override
Definition
AthenaSharedMemoryTool.cxx:260
AthenaSharedMemoryTool::initialize
virtual StatusCode initialize() override
Gaudi Service Interface method implementations:
Definition
AthenaSharedMemoryTool.cxx:49
AthenaSharedMemoryTool::ATLAS_NOT_THREAD_SAFE
virtual StatusCode putEvent ATLAS_NOT_THREAD_SAFE(long eventNumber, const void *source, size_t nbytes, unsigned int status) const override
AthenaSharedMemoryTool::m_sharedMemory
Gaudi::Property< std::string > m_sharedMemory
Definition
AthenaSharedMemoryTool.h:63
AthenaSharedMemoryTool::m_status
std::unique_ptr< boost::interprocess::mapped_region > m_status
Definition
AthenaSharedMemoryTool.h:71
AthenaSharedMemoryTool::m_num
int m_num
Definition
AthenaSharedMemoryTool.h:67
AthenaSharedMemoryTool::isClient
virtual bool isClient() const override
Definition
AthenaSharedMemoryTool.cxx:201
AthenaSharedMemoryTool::m_dataClients
std::set< int > m_dataClients
Definition
AthenaSharedMemoryTool.h:69
AthenaSharedMemoryTool::clearObject
virtual StatusCode clearObject(const char **tokenString, int &num) override
Definition
AthenaSharedMemoryTool.cxx:356
AthenaSharedMemoryTool::m_incidentSvc
ServiceHandle< IIncidentSvc > m_incidentSvc
Definition
AthenaSharedMemoryTool.h:75
AthenaSharedMemoryTool::m_lastClient
int m_lastClient
Definition
AthenaSharedMemoryTool.h:68
AthenaSharedMemoryTool::lockObject
virtual StatusCode lockObject(const char *tokenString, int num=0) override
Definition
AthenaSharedMemoryTool.cxx:440
AthenaSharedMemoryTool::getObject
virtual StatusCode getObject(void **target, size_t &nbytes, int num=0) override
Definition
AthenaSharedMemoryTool.cxx:325
AthenaSharedMemoryTool::m_maxSize
Gaudi::Property< size_t > m_maxSize
Definition
AthenaSharedMemoryTool.h:64
AthenaSharedMemoryTool::getLockedEvent
virtual StatusCode getLockedEvent(void **target, unsigned int &status) const override
Definition
AthenaSharedMemoryTool.cxx:241
AthenaSharedMemoryTool::ATLAS_THREAD_SAFE
std::optional< InputFileIncidentGuard > m_inputFileGuard ATLAS_THREAD_SAFE
Definition
AthenaSharedMemoryTool.h:76
AthenaSharedMemoryTool::stop
virtual StatusCode stop() override
Definition
AthenaSharedMemoryTool.cxx:58
AthenaSharedMemoryTool::makeClient
virtual StatusCode makeClient(int num, std::string &streamPortSuffix) override
Definition
AthenaSharedMemoryTool.cxx:146
AthenaSharedMemoryTool::isServer
virtual bool isServer() const override
Definition
AthenaSharedMemoryTool.cxx:141
AthenaSharedMemoryTool::m_isServer
bool m_isServer
Definition
AthenaSharedMemoryTool.h:73
AthenaSharedMemoryTool::m_maxDataClients
Gaudi::Property< int > m_maxDataClients
Definition
AthenaSharedMemoryTool.h:65
AthenaSharedMemoryTool::finalize
virtual StatusCode finalize() override
Definition
AthenaSharedMemoryTool.cxx:77
AthenaSharedMemoryTool::m_fileSeqNumber
long m_fileSeqNumber
Definition
AthenaSharedMemoryTool.h:72
AthenaSharedMemoryTool::putObject
virtual StatusCode putObject(const void *source, size_t nbytes, int num=0) override
Definition
AthenaSharedMemoryTool.cxx:284
AthenaSharedMemoryTool::AthenaSharedMemoryTool
AthenaSharedMemoryTool(const std::string &type, const std::string &name, const IInterface *parent)
Standard Service Constructor.
Definition
AthenaSharedMemoryTool.cxx:36
AthenaSharedMemoryTool::~AthenaSharedMemoryTool
virtual ~AthenaSharedMemoryTool()
Destructor.
Definition
AthenaSharedMemoryTool.cxx:45
AthenaSharedMemoryTool::makeServer
virtual StatusCode makeServer(int num, const std::string &streamPortSuffix) override
Definition
AthenaSharedMemoryTool.cxx:100
AthenaSharedMemoryTool::m_isClient
bool m_isClient
Definition
AthenaSharedMemoryTool.h:74
ServiceHandle
Definition
ClusterMakerTool.h:36
boost::interprocess
Definition
AthenaSharedMemoryTool.h:27
boost
Definition
AthenaSharedMemoryTool.h:26
type
Generated on
for ATLAS Offline Software by
1.17.0