The Gaudi Framework  v36r1 (3e2fb5a8)
StatusCodeSvc.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2019 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 #ifndef GAUDISVC_STATUSCODESVC_H
12 #define GAUDISVC_STATUSCODESVC_H
13 
15 #include "GaudiKernel/Service.h"
16 
17 #include "tbb/concurrent_unordered_map.h"
18 
19 #include <set>
20 #include <string>
21 
22 class StatusCodeSvc : public extends<Service, IStatusCodeSvc> {
23 public:
24  using extends::extends;
25  StatusCode initialize() override;
26  StatusCode reinitialize() override;
27  StatusCode finalize() override;
28 
29  void regFnc( const std::string& func, const std::string& lib ) override;
30  void list() const override;
31  bool suppressCheck() const override { return m_suppress.value(); }
32 
33 private:
34  struct StatCodeDat final {
35  // the atomic forces us to define these otherwise trivial constructors:
36  StatCodeDat( const std::string f, const std::string l ) : fnc( f ), lib( l ) {}
37  StatCodeDat( StatCodeDat&& o ) : fnc( o.fnc ), lib( o.lib ), count( o.count.load() ) {}
38  StatCodeDat( const StatCodeDat& o ) : fnc( o.fnc ), lib( o.lib ), count( o.count.load() ) {}
42  };
43 
44  void parseFilter( const std::string& str, std::string& fnc, std::string& lib ) const;
45  bool failsFilter( const std::string& fnc, const std::string& lib ) const;
46 
48  Gaudi::Property<bool> m_abort{this, "AbortOnError", false};
49  Gaudi::Property<bool> m_suppress{this, "SuppressCheck", false};
50  Gaudi::Property<bool> m_dict{this, "IgnoreDicts", true};
51 
52  tbb::concurrent_unordered_map<std::string, StatCodeDat> m_dat;
54 };
55 
56 #endif
std::string
STL class.
StatusCodeSvc::StatCodeDat::fnc
std::string fnc
Definition: StatusCodeSvc.h:39
StatusCodeSvc::StatCodeDat::count
std::atomic< unsigned int > count
Definition: StatusCodeSvc.h:41
StatusCodeSvc::m_abort
Gaudi::Property< bool > m_abort
Definition: StatusCodeSvc.h:48
StatusCodeSvc::m_filterfnc
std::set< std::string > m_filterfnc
Definition: StatusCodeSvc.h:53
StatusCodeSvc::regFnc
void regFnc(const std::string &func, const std::string &lib) override
Definition: StatusCodeSvc.cpp:56
StatusCodeSvc::m_suppress
Gaudi::Property< bool > m_suppress
Definition: StatusCodeSvc.h:49
StatusCodeSvc::StatCodeDat::StatCodeDat
StatCodeDat(StatCodeDat &&o)
Definition: StatusCodeSvc.h:37
StatusCodeSvc::parseFilter
void parseFilter(const std::string &str, std::string &fnc, std::string &lib) const
Definition: StatusCodeSvc.cpp:151
StatusCodeSvc::StatCodeDat
Definition: StatusCodeSvc.h:34
StatusCodeSvc::StatCodeDat::StatCodeDat
StatCodeDat(const std::string f, const std::string l)
Definition: StatusCodeSvc.h:36
StatusCodeSvc::m_filterlib
std::set< std::string > m_filterlib
Definition: StatusCodeSvc.h:53
StatusCodeSvc::StatCodeDat::lib
std::string lib
Definition: StatusCodeSvc.h:40
IStatusCodeSvc.h
StatusCode
Definition: StatusCode.h:65
StatusCodeSvc::finalize
StatusCode finalize() override
Definition: StatusCodeSvc.cpp:48
GaudiPluginService.cpluginsvc.func
func
Definition: cpluginsvc.py:222
Gaudi::Property::value
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:240
StatusCodeSvc::m_dict
Gaudi::Property< bool > m_dict
Definition: StatusCodeSvc.h:50
StatusCodeSvc::reinitialize
StatusCode reinitialize() override
Definition: StatusCodeSvc.cpp:40
StatusCodeSvc::failsFilter
bool failsFilter(const std::string &fnc, const std::string &lib) const
Definition: StatusCodeSvc.cpp:103
StatusCodeSvc::m_pFilter
Gaudi::Property< std::vector< std::string > > m_pFilter
Definition: StatusCodeSvc.h:47
StatusCodeSvc
Definition: StatusCodeSvc.h:22
std::atomic< unsigned int >
extends
Base class used to extend a class implementing other interfaces.
Definition: extends.h:20
Service.h
StatusCodeSvc::StatCodeDat::StatCodeDat
StatCodeDat(const StatCodeDat &o)
Definition: StatusCodeSvc.h:38
gaudirun.l
dictionary l
Definition: gaudirun.py:553
StatusCodeSvc::list
void list() const override
Definition: StatusCodeSvc.cpp:109
StatusCodeSvc::initialize
StatusCode initialize() override
Definition: StatusCodeSvc.cpp:21
StatusCodeSvc::suppressCheck
bool suppressCheck() const override
Definition: StatusCodeSvc.h:31
std::set< std::string >
Gaudi::Property
Implementation of property with value of concrete type.
Definition: Property.h:39
StatusCodeSvc::m_dat
tbb::concurrent_unordered_map< std::string, StatCodeDat > m_dat
Definition: StatusCodeSvc.h:52