ATLAS Offline Software
AthenaPoolSharedIOCnvSvc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ATHENAPOOLCNVSVC_ATHENAPOOLSHAREDIOCNVSVC_H
6 #define ATHENAPOOLCNVSVC_ATHENAPOOLSHAREDIOCNVSVC_H
7 
13 #include "AthenaPoolCnvSvc.h"
16 
17 // Forward declarations
18 class Guid;
19 
20 template <class TYPE> class SvcFactory;
21 
25 class AthenaPoolSharedIOCnvSvc : public extends<AthenaPoolCnvSvc,
26  IDataShare> {
27  // Allow the factory class access to the constructor
29 
30 public:
31 
33  virtual StatusCode initialize() override;
35  virtual StatusCode finalize() override;
36 
40  virtual StatusCode connectOutput(const std::string& outputConnectionSpec,
41  const std::string& openMode) override;
42 
46  virtual StatusCode connectOutput(const std::string& outputConnectionSpec) override;
47 
50  virtual StatusCode commitOutput(const std::string& outputConnectionSpec, bool doCommit) override;
51 
53  virtual StatusCode disconnectOutput(const std::string& outputConnectionSpec) override;
54 
59  virtual Token* registerForWrite(Placement* placement, const void* obj, const RootType& classDesc) override;
60 
63  virtual void setObjPtr(void*& obj, const Token* token) override;
64 
71  StatusCode createAddress(long svcType,
72  const CLID& clid,
73  const std::string* par,
74  const unsigned long* ip,
75  IOpaqueAddress*& refpAddress) override;
76 
82  virtual StatusCode createAddress(long svcType,
83  const CLID& clid,
84  const std::string& refAddress,
85  IOpaqueAddress*& refpAddress) override;
86 
88  virtual StatusCode makeServer(int num) override;
89 
91  virtual StatusCode makeClient(int num) override;
92 
94  virtual StatusCode readData() override;
95 
97  virtual StatusCode commitCatalog() override;
98 
101  StatusCode abortSharedWrClients(int client_n);
102 
104  virtual void handle(const Incident& incident) override;
105 
107  AthenaPoolSharedIOCnvSvc(const std::string& name, ISvcLocator* pSvcLocator);
109  virtual ~AthenaPoolSharedIOCnvSvc() = default;
110 
111 private: // data
112  ServiceHandle<IAthenaSerializeSvc> m_serializeSvc{this,"AthenaRootSerializeSvc","AthenaRootSerializeSvc"};
113  ToolHandle<IAthenaIPCTool> m_inputStreamingTool{this,"InputStreamingTool",{}};
114  ToolHandle<IAthenaIPCTool> m_outputStreamingTool{this,"OutputStreamingTool",{}};
117 
118 private: // properties
121  StringProperty m_metadataContainerProp{this,"OutputMetadataContainer","MetaData"};
122  StringArrayProperty m_metadataContainersAug{this, "OutputMetadataContainers", {}, "Metadata containers used for augmentations"};
123 
125  IntegerProperty m_makeStreamingToolClient{this,"MakeStreamingToolClient",0};
127  IntegerProperty m_streamingTechnology{this,"StreamingTechnology",-1};
129  BooleanProperty m_parallelCompression{this,"ParallelCompression",true};
131  StringProperty m_streamPortString{this,"StreamPortString","?pmerge=localhost:0"};
132 };
133 
134 #endif
AthenaPoolSharedIOCnvSvc::makeServer
virtual StatusCode makeServer(int num) override
Make this a server.
Definition: AthenaPoolSharedIOCnvSvc.cxx:609
AthenaPoolSharedIOCnvSvc::m_serializeSvc
ServiceHandle< IAthenaSerializeSvc > m_serializeSvc
Definition: AthenaPoolSharedIOCnvSvc.h:112
Placement
This class holds all the necessary information to guide the writing of an object in a physical place.
Definition: Placement.h:19
AthenaPoolSharedIOCnvSvc::m_metadataClient
int m_metadataClient
Definition: AthenaPoolSharedIOCnvSvc.h:116
AthenaPoolSharedIOCnvSvc::readData
virtual StatusCode readData() override
Read the next data object.
Definition: AthenaPoolSharedIOCnvSvc.cxx:656
AthenaPoolSharedIOCnvSvc::createAddress
StatusCode createAddress(long svcType, const CLID &clid, const std::string *par, const unsigned long *ip, IOpaqueAddress *&refpAddress) override
Create a Generic address using explicit arguments to identify a single object.
Definition: AthenaPoolSharedIOCnvSvc.cxx:588
AthenaPoolSharedIOCnvSvc::m_streamServerActive
bool m_streamServerActive
Definition: AthenaPoolSharedIOCnvSvc.h:115
IDataShare.h
AthenaPoolSharedIOCnvSvc::commitOutput
virtual StatusCode commitOutput(const std::string &outputConnectionSpec, bool doCommit) override
Implementation of IConversionSvc: Commit pending output.
Definition: AthenaPoolSharedIOCnvSvc.cxx:125
SvcFactory
Definition: AthCnvSvc.h:28
AthenaPoolSharedIOCnvSvc::abortSharedWrClients
StatusCode abortSharedWrClients(int client_n)
Send abort to SharedWriter clients if the server quits on error.
Definition: AthenaPoolSharedIOCnvSvc.cxx:735
AthenaPoolSharedIOCnvSvc::handle
virtual void handle(const Incident &incident) override
Implementation of IIncidentListener: Handle for EndEvent incidence.
Definition: AthenaPoolSharedIOCnvSvc.cxx:755
AthenaPoolSharedIOCnvSvc::disconnectOutput
virtual StatusCode disconnectOutput(const std::string &outputConnectionSpec) override
Disconnect to the output connection.
Definition: AthenaPoolSharedIOCnvSvc.cxx:383
AthenaPoolSharedIOCnvSvc::m_metadataContainerProp
StringProperty m_metadataContainerProp
For SharedWriter: To use MetadataSvc to merge data placed in a certain container.
Definition: AthenaPoolSharedIOCnvSvc.h:121
Token
This class provides a token that identifies in a unique way objects on the persistent storage.
Definition: Token.h:21
AthenaPoolSharedIOCnvSvc::m_inputStreamingTool
ToolHandle< IAthenaIPCTool > m_inputStreamingTool
Definition: AthenaPoolSharedIOCnvSvc.h:113
AthenaPoolSharedIOCnvSvc::commitCatalog
virtual StatusCode commitCatalog() override
Commit Catalog.
Definition: AthenaPoolSharedIOCnvSvc.cxx:726
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthenaPoolSharedIOCnvSvc::m_streamingTechnology
IntegerProperty m_streamingTechnology
Use Streaming for selected technologies only.
Definition: AthenaPoolSharedIOCnvSvc.h:127
AthenaPoolCnvSvc.h
This file contains the class definition for the AthenaPoolCnvSvc class.
find_tgc_unfilled_channelids.ip
ip
Definition: find_tgc_unfilled_channelids.py:3
IAthenaSerializeSvc.h
AthenaPoolSharedIOCnvSvc::m_metadataContainersAug
StringArrayProperty m_metadataContainersAug
Definition: AthenaPoolSharedIOCnvSvc.h:122
AthenaPoolSharedIOCnvSvc::~AthenaPoolSharedIOCnvSvc
virtual ~AthenaPoolSharedIOCnvSvc()=default
Destructor.
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
AthenaPoolSharedIOCnvSvc::finalize
virtual StatusCode finalize() override
Required of all Gaudi Services.
Definition: AthenaPoolSharedIOCnvSvc.cxx:64
trigbs_pickEvents.num
num
Definition: trigbs_pickEvents.py:76
AthenaPoolSharedIOCnvSvc::setObjPtr
virtual void setObjPtr(void *&obj, const Token *token) override
Definition: AthenaPoolSharedIOCnvSvc.cxx:511
AthenaPoolSharedIOCnvSvc::m_makeStreamingToolClient
IntegerProperty m_makeStreamingToolClient
Make this instance a Streaming Client during first connect/write automatically.
Definition: AthenaPoolSharedIOCnvSvc.h:125
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:28
AthenaPoolSharedIOCnvSvc::makeClient
virtual StatusCode makeClient(int num) override
Make this a client.
Definition: AthenaPoolSharedIOCnvSvc.cxx:635
Guid
This class provides a encapsulation of a GUID/UUID/CLSID/IID data structure (128 bit number).
Definition: Guid.h:20
AthenaPoolSharedIOCnvSvc
This class provides the interface between Athena and PoolSvc.
Definition: AthenaPoolSharedIOCnvSvc.h:26
AthenaPoolSharedIOCnvSvc::registerForWrite
virtual Token * registerForWrite(Placement *placement, const void *obj, const RootType &classDesc) override
Definition: AthenaPoolSharedIOCnvSvc.cxx:406
AthenaPoolSharedIOCnvSvc::m_outputStreamingTool
ToolHandle< IAthenaIPCTool > m_outputStreamingTool
Definition: AthenaPoolSharedIOCnvSvc.h:114
AthenaPoolSharedIOCnvSvc::initialize
virtual StatusCode initialize() override
Required of all Gaudi Services.
Definition: AthenaPoolSharedIOCnvSvc.cxx:35
AthenaPoolSharedIOCnvSvc::AthenaPoolSharedIOCnvSvc
AthenaPoolSharedIOCnvSvc(const std::string &name, ISvcLocator *pSvcLocator)
Standard Service Constructor.
Definition: AthenaPoolSharedIOCnvSvc.cxx:761
python.PyAthena.obj
obj
Definition: PyAthena.py:132
AthenaPoolSharedIOCnvSvc::connectOutput
virtual StatusCode connectOutput(const std::string &outputConnectionSpec, const std::string &openMode) override
Implementation of IConversionSvc: Connect to the output connection specification with open mode.
Definition: AthenaPoolSharedIOCnvSvc.cxx:86
AthenaPoolSharedIOCnvSvc::m_streamPortString
StringProperty m_streamPortString
Extension to use ROOT TMemFile for event data, "?pmerge=<host>:<port>".
Definition: AthenaPoolSharedIOCnvSvc.h:131
AthenaPoolSharedIOCnvSvc::m_parallelCompression
BooleanProperty m_parallelCompression
Use Athena Object sharing for metadata only, event data is collected and send via ROOT TMemFile.
Definition: AthenaPoolSharedIOCnvSvc.h:129
ServiceHandle< IAthenaSerializeSvc >
TScopeAdapter
Definition: RootType.h:119