The Gaudi Framework  master (f5098d57)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
AuditorSvc.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2025 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #pragma once
12 
14 #include <GaudiKernel/Service.h>
15 #include <memory>
16 #include <vector>
17 
22 class AuditorSvc : public extends<Service, IAuditorSvc> {
23 public:
24  StatusCode initialize() override {
25  // make sure we synchronize auditors at initialization
26  return Service::initialize().andThen( [&] { return syncAuditors(); } );
27  }
28  StatusCode finalize() override;
29 
30  void before( std::string const&, std::string const&, EventContext const& ) override;
31  void after( std::string const&, std::string const&, EventContext const&, StatusCode const& ) override;
32 
33  bool isEnabled() const override { return m_isEnabled; };
34 
36  StatusCode sysFinalize() override { return Service::sysFinalize(); }
37 
39  Gaudi::IAuditor* getAuditor( std::string const& name ) const override;
41  bool hasAuditor( std::string const& name ) const override { return getAuditor( name ) != nullptr; };
43  StatusCode addAuditor( std::string const& name ) override;
45  std::optional<StatusCode> removesAuditor( std::string const& name ) override;
46 
47  using extends::extends;
48 
49 private:
50  std::unique_ptr<Gaudi::IAuditor> newAuditor( MsgStream&, std::string_view );
53 
55  this,
56  "Auditors",
57  {},
58  [this]( auto& ) {
59  // Warn that any change of this property after initialize
60  // won't be taken into account
62  error() << "Updating 'Auditors' after initialize is not supported. Use addAuditor instead." << endmsg;
63  }
64  },
65  "list of auditors names",
66  "OrderedSet<std::string>" };
67  Gaudi::Property<bool> m_isEnabled{ this, "Enable", true, "enable/disable alltogether the auditors" };
68 
69  // Manager list of Auditors
70  std::vector<std::unique_ptr<Gaudi::IAuditor>> m_pAudList;
71 };
AuditorSvc::m_isEnabled
Gaudi::Property< bool > m_isEnabled
Definition: AuditorSvc.h:67
AuditorSvc::sysFinalize
StatusCode sysFinalize() override
Definition: AuditorSvc.h:36
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:119
Service::sysInitialize
StatusCode sysInitialize() override
Initialize Service
Definition: Service.cpp:34
StatusCode::andThen
StatusCode andThen(F &&f, ARGS &&... args) const
Chain code blocks making the execution conditional a success result.
Definition: StatusCode.h:164
Gaudi::IAuditor
The IAuditor is the interface implemented by the Auditor base class.
Definition: IAuditor.h:26
AuditorSvc::initialize
StatusCode initialize() override
Definition: AuditorSvc.h:24
AuditorSvc::removesAuditor
std::optional< StatusCode > removesAuditor(std::string const &name) override
removes an Auditor. Returns whether the Auditor was present (and thus removed)
Definition: AuditorSvc.cpp:69
AuditorSvc::hasAuditor
bool hasAuditor(std::string const &name) const override
management functionality: check if an Auditor exists
Definition: AuditorSvc.h:41
IAuditorSvc.h
Service::FSMState
Gaudi::StateMachine::State FSMState() const override
Definition: Service.h:62
AuditorSvc::addAuditor
StatusCode addAuditor(std::string const &name) override
adds a new Auditor
Definition: AuditorSvc.cpp:54
Service::name
const std::string & name() const override
Retrieve name of the service
Definition: Service.cpp:334
StatusCode
Definition: StatusCode.h:65
AuditorSvc::getAuditor
Gaudi::IAuditor * getAuditor(std::string const &name) const override
management functionality: retrieve an Auditor
Definition: AuditorSvc.cpp:46
AuditorSvc
This service manages Auditors.
Definition: AuditorSvc.h:22
AuditorSvc::isEnabled
bool isEnabled() const override
Definition: AuditorSvc.h:33
AuditorSvc::finalize
StatusCode finalize() override
Definition: AuditorSvc.cpp:102
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202
extends
Base class used to extend a class implementing other interfaces.
Definition: extends.h:20
MsgStream
Definition: MsgStream.h:33
AuditorSvc::newAuditor
std::unique_ptr< Gaudi::IAuditor > newAuditor(MsgStream &, std::string_view)
Definition: AuditorSvc.cpp:25
Service.h
AuditorSvc::sysInitialize
StatusCode sysInitialize() override
Definition: AuditorSvc.h:35
Service::sysFinalize
StatusCode sysFinalize() override
Finalize Service
Definition: Service.cpp:194
Gaudi::StateMachine::INITIALIZED
@ INITIALIZED
Definition: StateMachine.h:25
AuditorSvc::after
void after(std::string const &, std::string const &, EventContext const &, StatusCode const &) override
Definition: AuditorSvc.cpp:117
EventContext
Definition: EventContext.h:34
AuditorSvc::m_pAudList
std::vector< std::unique_ptr< Gaudi::IAuditor > > m_pAudList
Definition: AuditorSvc.h:70
AuditorSvc::m_audNameList
Gaudi::Property< std::vector< std::string > > m_audNameList
Definition: AuditorSvc.h:54
AuditorSvc::before
void before(std::string const &, std::string const &, EventContext const &) override
Definition: AuditorSvc.cpp:110
AuditorSvc::syncAuditors
StatusCode syncAuditors()
internal mathod to update auditors when m_audNameList is changed
Definition: AuditorSvc.cpp:82
Gaudi::Property
Implementation of property with value of concrete type.
Definition: Property.h:37