ATLAS Offline Software
Loading...
Searching...
No Matches
AthenaPoolSharedIOCnvSvc.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 ATHENAPOOLCNVSVC_ATHENAPOOLSHAREDIOCNVSVC_H
6#define ATHENAPOOLCNVSVC_ATHENAPOOLSHAREDIOCNVSVC_H
7
12
13#include "AthenaPoolCnvSvc.h"
16
17// Forward declarations
18class Guid;
19
20namespace RootAuxDynIO {
21 class IFactoryTool;
22 class IAuxDynShare;
23}
24
25template <class TYPE> class SvcFactory;
26
30class AthenaPoolSharedIOCnvSvc : public extends<AthenaPoolCnvSvc,
31 IDataShare> {
32 // Allow the factory class access to the constructor
34
35public:
36
38 virtual StatusCode initialize() override;
40 virtual StatusCode finalize() override;
41
45 virtual StatusCode connectOutput(const std::string& outputConnectionSpec,
46 const std::string& openMode) override;
47
51 virtual StatusCode connectOutput(const std::string& outputConnectionSpec) override;
52
55 virtual StatusCode commitOutput(const std::string& outputConnectionSpec, bool doCommit) override;
56
58 virtual StatusCode disconnectOutput(const std::string& outputConnectionSpec) override;
59
64 virtual Token* registerForWrite(Placement* placement, const void* obj, const RootType& classDesc) override;
65
68 virtual void setObjPtr(void*& obj, const Token* token) override;
69
76 StatusCode createAddress(long svcType,
77 const CLID& clid,
78 const std::string* par,
79 const unsigned long* ip,
80 IOpaqueAddress*& refpAddress) override;
81
87 virtual StatusCode createAddress(long svcType,
88 const CLID& clid,
89 const std::string& refAddress,
90 IOpaqueAddress*& refpAddress) override;
91
93 virtual StatusCode cleanUp(const std::string& connection) override;
94
96 virtual StatusCode makeServer(int num) override;
97
99 virtual StatusCode makeClient(int num) override;
100
102 virtual StatusCode readData() override;
103
105 virtual StatusCode commitCatalog() override;
106
109 StatusCode abortSharedWrClients(int client_n);
110
112 virtual void handle(const Incident& incident) override;
113
115 AthenaPoolSharedIOCnvSvc(const std::string& name, ISvcLocator* pSvcLocator);
118
119private: // data
120 ServiceHandle<IAthenaSerializeSvc> m_serializeSvc{this,"AthenaRootSerializeSvc","AthenaRootSerializeSvc"};
121 std::unique_ptr<RootAuxDynIO::IFactoryTool> m_auxDynTool;
122 ToolHandle<IAthenaIPCTool> m_inputStreamingTool{this,"InputStreamingTool",{}};
123 std::unique_ptr<RootAuxDynIO::IAuxDynShare> m_auxInput;
124 ToolHandle<IAthenaIPCTool> m_outputStreamingTool{this,"OutputStreamingTool",{}};
125 std::unique_ptr<RootAuxDynIO::IAuxDynShare> m_auxOutput;
126
129
130private: // properties
133 Gaudi::Property<std::string> m_metadataContainerProp{this,"OutputMetadataContainer","MetaData"};
134 Gaudi::Property<std::vector<std::string>> m_metadataContainersAug{this, "OutputMetadataContainers", {}, "Metadata containers used for augmentations"};
135
137 Gaudi::Property<int> m_makeStreamingToolClient{this,"MakeStreamingToolClient",0};
139 Gaudi::Property<int> m_streamingTechnology{this,"StreamingTechnology",-1};
141 Gaudi::Property<bool> m_parallelCompression{this,"ParallelCompression",true};
143 Gaudi::Property<std::string> m_streamPortString{this,"StreamPortString","?pmerge=localhost:0"};
145 std::map<std::string, int> m_fileCommitCounter;
146 Gaudi::Property<std::map<std::string, int>> m_fileFlushSetting{this,"FileFlushSetting",{}};
147};
148
149#endif
This file contains the class definition for the AthenaPoolCnvSvc class.
uint32_t CLID
The Class ID type.
TTypeAdapter RootType
Definition RootType.h:211
std::map< std::string, int > m_fileCommitCounter
Force SharedWriter to flush data to output file at given intervals, needed by parallel compression.
virtual StatusCode commitOutput(const std::string &outputConnectionSpec, bool doCommit) override
Implementation of IConversionSvc: Commit pending output.
Gaudi::Property< std::string > m_streamPortString
Extension to use ROOT TMemFile for event data, "?pmerge=<host>:<port>".
virtual StatusCode finalize() override
Required of all Gaudi Services.
AthenaPoolSharedIOCnvSvc(const std::string &name, ISvcLocator *pSvcLocator)
Standard Service Constructor.
virtual StatusCode cleanUp(const std::string &connection) override
Implement cleanUp to call all registered IAthenaPoolCleanUp cleanUp() function.
virtual void setObjPtr(void *&obj, const Token *token) override
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.
std::unique_ptr< RootAuxDynIO::IAuxDynShare > m_auxOutput
StatusCode abortSharedWrClients(int client_n)
Send abort to SharedWriter clients if the server quits on error.
virtual StatusCode makeServer(int num) override
Make this a server.
virtual void handle(const Incident &incident) override
Implementation of IIncidentListener: Handle for EndEvent incidence.
Gaudi::Property< std::string > m_metadataContainerProp
For SharedWriter: To use MetadataSvc to merge data placed in a certain container.
virtual StatusCode disconnectOutput(const std::string &outputConnectionSpec) override
Disconnect to the output connection.
virtual StatusCode readData() override
Read the next data object.
virtual StatusCode commitCatalog() override
Commit Catalog.
virtual StatusCode connectOutput(const std::string &outputConnectionSpec, const std::string &openMode) override
Implementation of IConversionSvc: Connect to the output connection specification with open mode.
std::unique_ptr< RootAuxDynIO::IAuxDynShare > m_auxInput
virtual ~AthenaPoolSharedIOCnvSvc()
Destructor.
Gaudi::Property< std::vector< std::string > > m_metadataContainersAug
Gaudi::Property< bool > m_parallelCompression
Use Athena Object sharing for metadata only, event data is collected and send via ROOT TMemFile.
ToolHandle< IAthenaIPCTool > m_outputStreamingTool
Gaudi::Property< std::map< std::string, int > > m_fileFlushSetting
Gaudi::Property< int > m_streamingTechnology
Use Streaming for selected technologies only.
virtual StatusCode initialize() override
Required of all Gaudi Services.
ToolHandle< IAthenaIPCTool > m_inputStreamingTool
ServiceHandle< IAthenaSerializeSvc > m_serializeSvc
virtual Token * registerForWrite(Placement *placement, const void *obj, const RootType &classDesc) override
Gaudi::Property< int > m_makeStreamingToolClient
Make this instance a Streaming Client during first connect/write automatically.
virtual StatusCode makeClient(int num) override
Make this a client.
std::unique_ptr< RootAuxDynIO::IFactoryTool > m_auxDynTool
This class provides a encapsulation of a GUID/UUID/CLSID/IID data structure (128 bit number).
Definition Guid.h:25
This class holds all the necessary information to guide the writing of an object in a physical place.
Definition Placement.h:20
This class provides a token that identifies in a unique way objects on the persistent storage.
Definition Token.h:22
Specialization of RootAuxDynStore for reading Aux Dynamic attributes from RNTuple.