ATLAS Offline Software
AthenaSharedWriter.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
10 #include "AthenaSharedWriter.h"
14 
15 //___________________________________________________________________________
16 AthenaSharedWriter::AthenaSharedWriter(const std::string& name, ISvcLocator* pSvcLocator)
17  : AthFilterAlgorithm(name, pSvcLocator) {
18 }
19 //___________________________________________________________________________
21  ATH_MSG_INFO("in initialize()");
22  // Initialize IConversionSvc
23  ATH_CHECK(m_cnvSvc.retrieve());
24  // Use IDataShare to make ConversionSvc a Share Server
25  IDataShare* dataShare = dynamic_cast<IDataShare*>(m_cnvSvc.get());
26  if (dataShare == nullptr || !dataShare->makeServer(-m_numberOfClients.value() - 1).isSuccess()) {
27  ATH_MSG_FATAL("Could not make AthenaPoolCnvSvc a share server: " << dataShare);
28  return StatusCode::FAILURE;
29  } else {
30  ATH_MSG_DEBUG("Successfully made the conversion service a share server");
31  }
32  // Initialize IAthenaSharedWriterSvc
33  ATH_CHECK(m_sharedWriterSvc.retrieve());
34  return StatusCode::SUCCESS;
35 }
36 //___________________________________________________________________________
38  ATH_MSG_DEBUG("in execute()");
40  setFilterPassed(false); // don't output events
41  return StatusCode::SUCCESS;
42 }
43 //___________________________________________________________________________
45  ATH_MSG_INFO("in finalize()");
46  AthCnvSvc* cnvSvc = dynamic_cast<AthCnvSvc*>(m_cnvSvc.get());
47  if (cnvSvc == nullptr || !cnvSvc->disconnectOutput("").isSuccess()) {
48  ATH_MSG_FATAL("Could not disconnectOutput");
49  return StatusCode::FAILURE;
50  }
51  // Release IAthenaSharedWriterSvc
52  if (!m_sharedWriterSvc.release().isSuccess()) {
53  ATH_MSG_WARNING("Could not release IAthenaSharedWriterSvc");
54  }
55  return StatusCode::SUCCESS;
56 }
AthFilterAlgorithm::setFilterPassed
virtual void setFilterPassed(bool state) const
Set the filter passed flag to the specified state.
Definition: AthFilterAlgorithm.cxx:99
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AthenaSharedWriter::AthenaSharedWriter
AthenaSharedWriter(const std::string &name, ISvcLocator *pSvcLocator)
Standard Service Constructor.
Definition: AthenaSharedWriter.cxx:16
AthenaSharedWriter::m_numberOfClients
IntegerProperty m_numberOfClients
Definition: AthenaSharedWriter.h:35
IDataShare.h
AthCnvSvc.h
AthenaSharedWriter.h
This file contains the class definition for the AthenaSharedWriter class.
IAthenaSharedWriterSvc.h
IDataShare
Abstract interface for sharing data.
Definition: IDataShare.h:28
AthenaSharedWriter::initialize
virtual StatusCode initialize() override
Gaudi Service Interface method implementations:
Definition: AthenaSharedWriter.cxx:20
AthenaSharedWriter::execute
virtual StatusCode execute() override
Definition: AthenaSharedWriter.cxx:37
AthFilterAlgorithm
Definition: AthFilterAlgorithm.h:26
AthenaSharedWriter::finalize
virtual StatusCode finalize() override
Definition: AthenaSharedWriter.cxx:44
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthenaSharedWriter::m_cnvSvc
ServiceHandle< IConversionSvc > m_cnvSvc
Definition: AthenaSharedWriter.h:38
IDataShare::makeServer
virtual StatusCode makeServer(int num)=0
Make this a server.
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
AthenaSharedWriter::m_sharedWriterSvc
ServiceHandle< IAthenaSharedWriterSvc > m_sharedWriterSvc
Definition: AthenaSharedWriter.h:39
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
AthCnvSvc::disconnectOutput
virtual StatusCode disconnectOutput(const std::string &output)
Disconnect output files from the service.
Definition: AthCnvSvc.cxx:437
AthCnvSvc
Definition: AthCnvSvc.h:67