 |
ATLAS Offline Software
|
This class provides the interface between Athena and PoolSvc.
More...
#include <AthenaPoolSharedIOCnvSvc.h>
|
virtual StatusCode | initialize () override |
| Required of all Gaudi Services. More...
|
|
virtual StatusCode | finalize () override |
| Required of all Gaudi Services. More...
|
|
virtual StatusCode | connectOutput (const std::string &outputConnectionSpec, const std::string &openMode) override |
| Implementation of IConversionSvc: Connect to the output connection specification with open mode. More...
|
|
virtual StatusCode | connectOutput (const std::string &outputConnectionSpec) override |
| Implementation of IConversionSvc: Connect to the output connection specification with open mode. More...
|
|
virtual StatusCode | commitOutput (const std::string &outputConnectionSpec, bool doCommit) override |
| Implementation of IConversionSvc: Commit pending output. More...
|
|
virtual StatusCode | disconnectOutput (const std::string &outputConnectionSpec) override |
| Disconnect to the output connection. More...
|
|
virtual Token * | registerForWrite (Placement *placement, const void *obj, const RootType &classDesc) override |
|
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. More...
|
|
virtual StatusCode | createAddress (long svcType, const CLID &clid, const std::string &refAddress, IOpaqueAddress *&refpAddress) override |
| Create address from string form. More...
|
|
virtual StatusCode | makeServer (int num) override |
| Make this a server. More...
|
|
virtual StatusCode | makeClient (int num) override |
| Make this a client. More...
|
|
virtual StatusCode | readData () override |
| Read the next data object. More...
|
|
virtual StatusCode | commitCatalog () override |
| Commit Catalog. More...
|
|
StatusCode | abortSharedWrClients (int client_n) |
| Send abort to SharedWriter clients if the server quits on error. More...
|
|
virtual void | handle (const Incident &incident) override |
| Implementation of IIncidentListener: Handle for EndEvent incidence. More...
|
|
| AthenaPoolSharedIOCnvSvc (const std::string &name, ISvcLocator *pSvcLocator) |
| Standard Service Constructor. More...
|
|
virtual | ~AthenaPoolSharedIOCnvSvc ()=default |
| Destructor. More...
|
|
|
ServiceHandle< IAthenaSerializeSvc > | m_serializeSvc {this,"AthenaRootSerializeSvc","AthenaRootSerializeSvc"} |
|
ToolHandle< IAthenaIPCTool > | m_inputStreamingTool {this,"InputStreamingTool",{}} |
|
ToolHandle< IAthenaIPCTool > | m_outputStreamingTool {this,"OutputStreamingTool",{}} |
|
bool | m_streamServerActive =false |
|
int | m_metadataClient =0 |
|
StringProperty | m_metadataContainerProp {this,"OutputMetadataContainer","MetaData"} |
| For SharedWriter: To use MetadataSvc to merge data placed in a certain container. More...
|
|
StringArrayProperty | m_metadataContainersAug {this, "OutputMetadataContainers", {}, "Metadata containers used for augmentations"} |
|
IntegerProperty | m_makeStreamingToolClient {this,"MakeStreamingToolClient",0} |
| Make this instance a Streaming Client during first connect/write automatically. More...
|
|
IntegerProperty | m_streamingTechnology {this,"StreamingTechnology",-1} |
| Use Streaming for selected technologies only. More...
|
|
BooleanProperty | m_parallelCompression {this,"ParallelCompression",true} |
| Use Athena Object sharing for metadata only, event data is collected and send via ROOT TMemFile. More...
|
|
StringProperty | m_streamPortString {this,"StreamPortString","?pmerge=localhost:0"} |
| Extension to use ROOT TMemFile for event data, "?pmerge=<host>:<port>". More...
|
|
This class provides the interface between Athena and PoolSvc.
Definition at line 25 of file AthenaPoolSharedIOCnvSvc.h.
◆ AthenaPoolSharedIOCnvSvc()
AthenaPoolSharedIOCnvSvc::AthenaPoolSharedIOCnvSvc |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~AthenaPoolSharedIOCnvSvc()
virtual AthenaPoolSharedIOCnvSvc::~AthenaPoolSharedIOCnvSvc |
( |
| ) |
|
|
virtualdefault |
◆ abortSharedWrClients()
StatusCode AthenaPoolSharedIOCnvSvc::abortSharedWrClients |
( |
int |
client_n | ) |
|
Send abort to SharedWriter clients if the server quits on error.
- Parameters
-
client_n | [IN] number of the current client, -1 if no current |
Definition at line 793 of file AthenaPoolSharedIOCnvSvc.cxx.
799 while (
sc.isSuccess()) {
805 while (
sc.isRecoverable()) {
809 return StatusCode::FAILURE;
◆ commitCatalog()
StatusCode AthenaPoolSharedIOCnvSvc::commitCatalog |
( |
| ) |
|
|
overridevirtual |
◆ commitOutput()
StatusCode AthenaPoolSharedIOCnvSvc::commitOutput |
( |
const std::string & |
outputConnectionSpec, |
|
|
bool |
doCommit |
|
) |
| |
|
overridevirtual |
Implementation of IConversionSvc: Commit pending output.
- Parameters
-
doCommit | [IN] boolean to force full commit |
Definition at line 127 of file AthenaPoolSharedIOCnvSvc.cxx.
129 std::string outputConnection = outputConnectionSpec.substr(0, outputConnectionSpec.find(
'['));
133 if (!this->cleanUp(outputConnection).isSuccess()) {
135 return(StatusCode::FAILURE);
137 return(StatusCode::SUCCESS);
140 ATH_MSG_DEBUG(
"commitOutput SKIPPED for uninitialized server.");
141 return(StatusCode::SUCCESS);
143 std::map<void*, RootType> commitCache;
147 const char* placementStr =
nullptr;
150 if (
sc.isSuccess() && placementStr !=
nullptr && strlen(placementStr) > 6 &&
num > 0) {
151 const char * matchedChars = strstr(placementStr,
"[FILE=");
152 if (not matchedChars){
163 bool dataHeaderSeen =
false;
164 std::string dataHeaderID;
166 std::string objName =
"ALL";
167 if (useDetailChronoStat()) {
168 objName = placementStr;
173 std::string_view pStr = placementStr;
174 std::string::size_type cpos = pStr.find (
"[CONT=");
175 if (cpos == std::string::npos) {
176 ATH_MSG_ERROR(
"No CONT field in placement string: " << pStr);
177 return StatusCode::FAILURE;
179 std::string tokenStr (pStr.substr(0, cpos));
180 std::string contName (pStr.substr(cpos, std::string::npos));
181 std::string::size_type cl1 = contName.find(
']');
182 if (cl1 == std::string::npos) {
183 ATH_MSG_ERROR(
"Missing close bracket after CONT field in placement string: " << pStr);
184 return StatusCode::FAILURE;
186 tokenStr.append(contName, cl1 + 1);
187 contName = contName.substr(6, cl1 - 6);
189 std::string::size_type ppos = pStr.find (
"[PNAME=");
190 if (ppos == std::string::npos) {
191 ATH_MSG_ERROR(
"No PNAME field in placement string: " << pStr);
192 return StatusCode::FAILURE;
194 std::string
className (pStr.substr(ppos, std::string::npos));
195 std::string::size_type cl2 =
className.find(
']');
196 if (cl2 == std::string::npos) {
197 ATH_MSG_ERROR(
"Missing close bracket after PNAME field in placement string: " << pStr);
198 return StatusCode::FAILURE;
203 std::ostringstream oss2;
204 oss2 << std::dec <<
num;
206 bool foundContainer =
false;
207 std::size_t opPos = contName.find(
'(');
209 foundContainer =
true;
212 if (contName.compare(0, opPos,
item) == 0){
213 foundContainer =
true;
219 if (len > 0 && foundContainer && contName[len] ==
'(' ) {
224 std::ostringstream oss1;
226 std::string memName =
"SHM[NUM=" + oss1.str() +
"]";
227 FileIncident beginInputIncident(
name(),
"BeginInputMemFile", memName);
228 incSvc->fireIncident(beginInputIncident);
229 FileIncident endInputIncident(
name(),
"EndInputMemFile", std::move(memName));
230 incSvc->fireIncident(endInputIncident);
237 sc = metadataSvc->shmProxy(std::string(pStr) +
"[NUM=" + oss2.str() +
"]");
238 if (
sc.isRecoverable()) {
240 }
else if (
sc.isFailure()) {
251 if( m_oneDataHeaderForm.value() ) {
252 auto placementWithSwn = [&] {
return std::format(
"{}[SWN={}]", placementStr,
num); };
256 "", placementWithSwn());
257 DHcnv->updateRepRefs(&
address,
static_cast<DataObject*
>(
obj)).ignore();
263 if (token ==
nullptr) {
267 tokenStr = token->toString();
272 tokenStr, placementWithSwn());
273 if (!DHcnv->updateRep(&
address,
static_cast<DataObject*
>(
obj)).isSuccess()) {
279 commitCache.insert(std::pair<void*, RootType>(
obj, classDesc));
281 placementStr =
nullptr;
285 placement.
fromString(placementStr); placementStr =
nullptr;
287 if (token ==
nullptr) {
291 tokenStr = token->toString();
297 if (!DHcnv->updateRep(&
address,
static_cast<DataObject*
>(
obj)).isSuccess()) {
301 dataHeaderSeen =
true;
308 dataHeaderID =
std::format(
"{}/{}/{}", token->contID(), oss2.str(), token->dbID().toString());
309 }
else if (dataHeaderSeen) {
310 dataHeaderSeen =
false;
316 tokenStr, dataHeaderID);
317 if (!DHcnv->updateRepRefs(&
address,
static_cast<DataObject*
>(
obj)).isSuccess()) {
318 ATH_MSG_ERROR(
"Failed updateRepRefs for obj = " << tokenStr);
323 GenericAddress
address(0, 0,
"", dataHeaderID);
324 if (!DHcnv->updateRepRefs(&
address,
nullptr).isSuccess()) {
331 commitCache.insert(std::pair<void*, RootType>(
obj, classDesc));
338 while (
sc.isRecoverable()) {
341 if (!
sc.isSuccess()) {
347 while (
sc.isRecoverable()) {
350 if (
sc.isFailure()) {
355 if (dataHeaderSeen) {
357 GenericAddress
address(0, 0,
"", std::move(dataHeaderID));
358 if (!DHcnv->updateRepRefs(&
address,
nullptr).isSuccess()) {
363 placementStr =
nullptr;
364 }
else if (
sc.isSuccess() && placementStr !=
nullptr && strncmp(placementStr,
"stop", 4) == 0) {
365 return(StatusCode::RECOVERABLE);
366 }
else if (
sc.isRecoverable() ||
num == -1) {
367 return(StatusCode::RECOVERABLE);
371 std::ostringstream oss1;
373 std::string memName =
"SHM[NUM=" + oss1.str() +
"]";
374 FileIncident beginInputIncident(
name(),
"BeginInputMemFile", memName);
375 incSvc->fireIncident(beginInputIncident);
376 FileIncident endInputIncident(
name(),
"EndInputMemFile", memName);
377 incSvc->fireIncident(endInputIncident);
378 if (
sc.isFailure()) {
379 ATH_MSG_INFO(
"All SharedWriter clients stopped - exiting");
383 return(StatusCode::FAILURE);
387 ATH_MSG_DEBUG(
"commitOutput SKIPPED for metadata-only server: " << outputConnectionSpec);
388 return(StatusCode::SUCCESS);
390 if (outputConnection.empty()) {
391 outputConnection = std::move(
fileName);
393 outputConnection = outputConnectionSpec;
◆ connectOutput() [1/2]
StatusCode AthenaPoolSharedIOCnvSvc::connectOutput |
( |
const std::string & |
outputConnectionSpec | ) |
|
|
overridevirtual |
Implementation of IConversionSvc: Connect to the output connection specification with open mode.
- Parameters
-
outputConnectionSpec | [IN] the name of the output connection specification as string. |
Definition at line 93 of file AthenaPoolSharedIOCnvSvc.cxx.
95 std::string outputConnection = outputConnectionSpec.substr(0, outputConnectionSpec.find(
'['));
98 ATH_MSG_ERROR(
"Could not make AthenaPoolSharedIOCnvSvc a Share Client");
99 return(StatusCode::FAILURE);
104 return(StatusCode::SUCCESS);
108 ATH_MSG_DEBUG(
"connectOutput SKIPPED for metadata-only server: " << outputConnectionSpec);
109 return(StatusCode::SUCCESS);
113 return(StatusCode::SUCCESS);
119 std::size_t apend = outputConnectionSpec.find(
'[');
120 if (apend != std::string::npos) {
121 outputConnection += outputConnectionSpec.substr(apend);
◆ connectOutput() [2/2]
StatusCode AthenaPoolSharedIOCnvSvc::connectOutput |
( |
const std::string & |
outputConnectionSpec, |
|
|
const std::string & |
openMode |
|
) |
| |
|
overridevirtual |
Implementation of IConversionSvc: Connect to the output connection specification with open mode.
- Parameters
-
outputConnectionSpec | [IN] the name of the output connection specification as string. |
openMode | [IN] the open mode of the file as string. |
Definition at line 88 of file AthenaPoolSharedIOCnvSvc.cxx.
◆ createAddress() [1/2]
StatusCode AthenaPoolSharedIOCnvSvc::createAddress |
( |
long |
svcType, |
|
|
const CLID & |
clid, |
|
|
const std::string & |
refAddress, |
|
|
IOpaqueAddress *& |
refpAddress |
|
) |
| |
|
overridevirtual |
Create address from string form.
- Parameters
-
svcType | [IN] service type of the address. |
clid | [IN] class id for the address. |
refAddress | [IN] string form to be converted. |
refpAddress | [OUT] converted address. |
Definition at line 660 of file AthenaPoolSharedIOCnvSvc.cxx.
◆ createAddress() [2/2]
StatusCode AthenaPoolSharedIOCnvSvc::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.
- Parameters
-
svcType | [IN] service type of the address. |
clid | [IN] class id for the address. |
par | [IN] string containing the database name. |
ip | [IN] object identifier. |
refpAddress | [OUT] converted address. |
Definition at line 611 of file AthenaPoolSharedIOCnvSvc.cxx.
618 ATH_MSG_ERROR(
"Could not make AthenaPoolSharedIOCnvSvc a Share Client");
619 return(StatusCode::FAILURE);
624 addressToken.
setDb(
par[0].substr(4));
629 return(StatusCode::FAILURE);
632 std::size_t nbytes = 0;
634 while (
sc.isRecoverable()) {
638 if (!
sc.isSuccess()) {
640 return(StatusCode::FAILURE);
642 auto token = std::make_unique<Token>();
643 token->fromString(
static_cast<const char*
>(
buffer));
buffer =
nullptr;
650 return(StatusCode::SUCCESS);
653 return(StatusCode::RECOVERABLE);
◆ disconnectOutput()
StatusCode AthenaPoolSharedIOCnvSvc::disconnectOutput |
( |
const std::string & |
outputConnectionSpec | ) |
|
|
overridevirtual |
Disconnect to the output connection.
Definition at line 406 of file AthenaPoolSharedIOCnvSvc.cxx.
407 std::string outputConnection = outputConnectionSpec.substr(0, outputConnectionSpec.find(
'['));
410 return(StatusCode::SUCCESS);
416 return(StatusCode::SUCCESS);
◆ finalize()
StatusCode AthenaPoolSharedIOCnvSvc::finalize |
( |
| ) |
|
|
overridevirtual |
◆ handle()
void AthenaPoolSharedIOCnvSvc::handle |
( |
const Incident & |
incident | ) |
|
|
overridevirtual |
◆ initialize()
StatusCode AthenaPoolSharedIOCnvSvc::initialize |
( |
| ) |
|
|
overridevirtual |
Required of all Gaudi Services.
Definition at line 37 of file AthenaPoolSharedIOCnvSvc.cxx.
51 getPoolSvc()->setShareMode(
true);
60 incSvc->addListener(
this,
"StoreCleared", pri);
◆ makeClient()
StatusCode AthenaPoolSharedIOCnvSvc::makeClient |
( |
int |
num | ) |
|
|
overridevirtual |
Make this a client.
Definition at line 693 of file AthenaPoolSharedIOCnvSvc.cxx.
696 std::string streamPortSuffix;
699 return(StatusCode::FAILURE);
702 ATH_MSG_DEBUG(
"makeClient: Setting conversion service port suffix to " << streamPortSuffix);
707 return(StatusCode::SUCCESS);
710 std::string dummyStr;
◆ makeServer()
StatusCode AthenaPoolSharedIOCnvSvc::makeServer |
( |
int |
num | ) |
|
|
overridevirtual |
Make this a server.
Definition at line 667 of file AthenaPoolSharedIOCnvSvc.cxx.
678 return(StatusCode::FAILURE);
681 m_persSvcPerOutput.setValue(
false);
682 return(StatusCode::SUCCESS);
684 return(StatusCode::RECOVERABLE);
687 return(StatusCode::RECOVERABLE);
◆ readData()
StatusCode AthenaPoolSharedIOCnvSvc::readData |
( |
| ) |
|
|
overridevirtual |
Read the next data object.
Definition at line 714 of file AthenaPoolSharedIOCnvSvc.cxx.
716 return(StatusCode::FAILURE);
718 const char* tokenStr =
nullptr;
721 if (
sc.isSuccess() && tokenStr !=
nullptr && strlen(tokenStr) > 0 &&
num > 0) {
729 token.
fromString(tokenStr); tokenStr =
nullptr;
731 std::string objName =
"ALL";
732 if (useDetailChronoStat()) {
741 std::size_t nbytes = 0;
744 while (
sc.isRecoverable()) {
748 if (!
sc.isSuccess()) {
750 return(StatusCode::FAILURE);
755 return(StatusCode::FAILURE);
760 return(StatusCode::FAILURE);
763 std::string returnToken;
765 if (metadataToken !=
nullptr) {
766 returnToken = metadataToken->
toString();
770 delete metadataToken; metadataToken =
nullptr;
775 return(StatusCode::FAILURE);
778 return(StatusCode::RECOVERABLE);
780 return(StatusCode::SUCCESS);
◆ registerForWrite()
- Returns
- a string token to a Data Object written to Pool
- Parameters
-
placement | [IN] pointer to the placement hint |
obj | [IN] pointer to the Data Object to be written to Pool |
classDesc | [IN] pointer to the Seal class description for the Data Object. |
Definition at line 429 of file AthenaPoolSharedIOCnvSvc.cxx.
432 ATH_MSG_ERROR(
"Could not make AthenaPoolSharedIOCnvSvc a Share Client");
436 Token* token =
nullptr;
440 std::string placementStr = placement->
toString();
441 placementStr +=
"[PNAME=";
442 placementStr += classDesc.
Name();
446 while (
sc.isRecoverable()) {
450 if (!
sc.isSuccess()) {
455 const void*
buffer =
nullptr;
456 std::size_t nbytes = 0;
458 if (classDesc.
Name() ==
"Token") {
459 nbytes = strlen(
static_cast<const char*
>(
obj)) + 1;
463 nbytes = classDesc.
SizeOf();
471 while (
sc.isRecoverable()) {
475 if (own) {
delete []
static_cast<const char*
>(
buffer); }
477 if (!
sc.isSuccess()) {
478 ATH_MSG_ERROR(
"Could not share object for: " << placementStr);
484 ATH_MSG_ERROR(
"Could not share dynamic aux store for: " << placementStr);
493 const char* tokenStr =
nullptr;
496 while (
sc.isRecoverable()) {
500 if (!
sc.isSuccess()) {
504 if (!strcmp(tokenStr,
"ABORT")) {
511 tempToken->
fromString(tokenStr); tokenStr =
nullptr;
513 token = tempToken; tempToken =
nullptr;
517 ATH_MSG_DEBUG(
"registerForWrite SKIPPED for uninitialized server, Placement = " << placement->
toString());
520 token = tempToken; tempToken =
nullptr;
523 token = getPoolSvc()->registerForWrite(placement,
obj, classDesc);
◆ setObjPtr()
void AthenaPoolSharedIOCnvSvc::setObjPtr |
( |
void *& |
obj, |
|
|
const Token * |
token |
|
) |
| |
|
overridevirtual |
- Parameters
-
obj | [OUT] pointer to the Data Object. |
token | [IN] string token of the Data Object for which a Pool Ref is filled. |
Definition at line 534 of file AthenaPoolSharedIOCnvSvc.cxx.
537 ATH_MSG_ERROR(
"Could not make AthenaPoolSharedIOCnvSvc a Share Client");
542 int num = token->
oid().first;
545 std::size_t nbytes = 0;
547 while (
sc.isRecoverable()) {
551 if (!
sc.isSuccess()) {
583 std::size_t nbytes = 0;
589 while (
sc.isRecoverable()) {
594 if (!
sc.isSuccess()) {
◆ SvcFactory< AthenaPoolSharedIOCnvSvc >
◆ m_inputStreamingTool
ToolHandle<IAthenaIPCTool> AthenaPoolSharedIOCnvSvc::m_inputStreamingTool {this,"InputStreamingTool",{}} |
|
private |
◆ m_makeStreamingToolClient
IntegerProperty AthenaPoolSharedIOCnvSvc::m_makeStreamingToolClient {this,"MakeStreamingToolClient",0} |
|
private |
◆ m_metadataClient
int AthenaPoolSharedIOCnvSvc::m_metadataClient =0 |
|
private |
◆ m_metadataContainerProp
StringProperty AthenaPoolSharedIOCnvSvc::m_metadataContainerProp {this,"OutputMetadataContainer","MetaData"} |
|
private |
◆ m_metadataContainersAug
StringArrayProperty AthenaPoolSharedIOCnvSvc::m_metadataContainersAug {this, "OutputMetadataContainers", {}, "Metadata containers used for augmentations"} |
|
private |
◆ m_outputStreamingTool
ToolHandle<IAthenaIPCTool> AthenaPoolSharedIOCnvSvc::m_outputStreamingTool {this,"OutputStreamingTool",{}} |
|
private |
◆ m_parallelCompression
BooleanProperty AthenaPoolSharedIOCnvSvc::m_parallelCompression {this,"ParallelCompression",true} |
|
private |
◆ m_serializeSvc
◆ m_streamingTechnology
IntegerProperty AthenaPoolSharedIOCnvSvc::m_streamingTechnology {this,"StreamingTechnology",-1} |
|
private |
◆ m_streamPortString
StringProperty AthenaPoolSharedIOCnvSvc::m_streamPortString {this,"StreamPortString","?pmerge=localhost:0"} |
|
private |
◆ m_streamServerActive
bool AthenaPoolSharedIOCnvSvc::m_streamServerActive =false |
|
private |
The documentation for this class was generated from the following files:
JetConstituentVector::iterator iterator
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.
ServiceHandle< IAthenaSerializeSvc > m_serializeSvc
static const Guid & null()
NULL-Guid: static class method.
This class holds all the necessary information to guide the writing of an object in a physical place.
static TScopeAdapter ByNameNoQuiet(const std::string &name, Bool_t load=kTRUE)
virtual StatusCode initialize() override
Required of all Gaudi Services.
const std::string & containerName() const
Access container name.
const std::string & contID() const
Access container identifier.
bool m_streamServerActive
const std::string & auxString() const
Access auxiliary string.
const Guid & dbID() const
Access database identifier.
StatusCode sendStore(const IAthenaSerializeSvc *serSvc, IAthenaIPCTool *ipcTool, const void *obj, const Guid &classId, const std::string &contName, int num=0)
Send dynamic aux store variables to streaming tool.
const std::string toString() const
Automatic conversion to string representation.
void commit()
Save catalog to file.
StatusCode abortSharedWrClients(int client_n)
Send abort to SharedWriter clients if the server quits on error.
const Guid & classID() const
Access database identifier.
virtual void setObjPtr(void *&obj, const Token *token) override
#define ATH_MSG_VERBOSE(x)
static const TypeH forGuid(const Guid &info)
Access classes by Guid.
StringProperty m_metadataContainerProp
For SharedWriter: To use MetadataSvc to merge data placed in a certain container.
This class provides a token that identifies in a unique way objects on the persistent storage.
virtual Token * registerForWrite(Placement *placement, const void *obj, const RootType &classDesc) override
ToolHandle< IAthenaIPCTool > m_inputStreamingTool
This class provides a Generic Transient Address for POOL tokens.
Token & fromString(const std::string &from)
Build from the string representation of a token.
Token & setClassID(const Guid &cl_id)
Access database identifier.
int technology() const
Access technology type.
StatusCode receiveStore(const IAthenaSerializeSvc *serSvc, IAthenaIPCTool *ipcTool, void *obj, int num=0)
Receive dynamic aux store variables from streaming tool.
virtual StatusCode finalize() override
Required of all Gaudi Services.
::StatusCode StatusCode
StatusCode definition for legacy code.
IntegerProperty m_streamingTechnology
Use Streaming for selected technologies only.
Default, invalid implementation of ClassID_traits.
Token & setDb(const Guid &db)
Set database name.
const std::string & fileName() const
Access file name.
Placement & setFileName(const std::string &fileName)
Set file name.
StringArrayProperty m_metadataContainersAug
const std::string & auxString() const
Access auxiliary string.
std::string Name(unsigned int mod=Reflex::SCOPED) const
virtual StatusCode disconnectOutput(const std::string &outputConnectionSpec) override
Disconnect to the output connection.
virtual void setObjPtr(void *&obj, const Token *token) override
IntegerProperty m_makeStreamingToolClient
Make this instance a Streaming Client during first connect/write automatically.
virtual StatusCode commitOutput(const std::string &outputConnectionSpec, bool doCommit) override
Implementation of IConversionSvc: Commit pending output.
virtual const std::string toString() const
Retrieve the string representation of the token.
virtual StatusCode makeClient(int num) override
Make this a client.
Token & setOid(const OID_t &oid)
Set object identifier.
const std::string toString() const
Retrieve the string representation of the placement.
Bool_t IsFundamental() const
#define ATH_MSG_WARNING(x)
const OID_t & oid() const
Access object identifier.
Token & setAuxString(const std::string &auxString)
Set auxiliary string.
virtual StatusCode connectOutput(const std::string &outputConnectionSpec, const std::string &openMode) override
Implementation of IConversionSvc: Connect to the output connection specification with open mode.
virtual Token * registerForWrite(Placement *placement, const void *obj, const RootType &classDesc) override
Token & setCont(const std::string &cnt)
Set container name.
ToolHandle< IAthenaIPCTool > m_outputStreamingTool
#define ATLAS_THREAD_SAFE
virtual StatusCode connectOutput(const std::string &outputConnectionSpec, const std::string &openMode) override
Implementation of IConversionSvc: Connect to the output connection specification with open mode.
StringProperty m_streamPortString
Extension to use ROOT TMemFile for event data, "?pmerge=<host>:<port>".
Placement & fromString(const std::string &from)
Build from the string representation of a placement.
This class provides the interface between AthenaPoolCnvSvc and AuxStore classes.
BooleanProperty m_parallelCompression
Use Athena Object sharing for metadata only, event data is collected and send via ROOT TMemFile.
static Guid guid(const TypeH &id)
Determine Guid (normalized string form) from reflection type.