DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
IssueFactory.hpp
Go to the documentation of this file.
1/*
2 * IssueFactory.h
3 * ers
4 *
5 * Created by Matthias Wiesmann on 30.11.04.
6 * Modified by Serguei Kolos on 10.08.05.
7 * Copyright 2005 CERN. All rights reserved.
8 *
9 */
10
11#ifndef ERS_ISSUE_FACTORY
12#define ERS_ISSUE_FACTORY
13
14#include <chrono>
15#include <string>
16#include <vector>
17#include <map>
18
19#include <ers/Severity.hpp>
20
27using std::chrono::system_clock;
28
29namespace ers
30{
31 class Issue;
32 class Context;
33 template <class > class SingletonCreator;
34
45 {
46 template <class > friend class SingletonCreator;
47
48 typedef Issue * (*IssueCreator)( const ers::Context & );
49 typedef std::map<std::string,IssueCreator> FunctionMap;
50
51 public:
52 static IssueFactory & instance();
54 Issue * create( const std::string & name,
55 const Context & context ) const ;
57 Issue * create( const std::string & name,
58 const std::list<std::string> & inheritance,
59 const Context & context,
61 const system_clock::time_point & time,
62 const std::string & message,
63 const std::vector<std::string> & qualifiers,
64 const std::map<std::string, std::string> & parameters,
65 const Issue * cause = 0 ) const ;
67 void register_issue( const std::string & name, IssueCreator creator );
69 private:
71 { ; }
72
74 };
75
76 std::ostream& operator<<(std::ostream&, const IssueFactory& factory);
77}
78
79#endif
80
An abstract interface to access an Issue context.
Definition Context.hpp:30
Implements factory pattern for user defined Issues.
static IssueFactory & instance()
method to access singleton
std::map< std::string, IssueCreator > FunctionMap
Issue * create(const std::string &name, const std::list< std::string > &inheritance, const Context &context, Severity severity, const system_clock::time_point &time, const std::string &message, const std::vector< std::string > &qualifiers, const std::map< std::string, std::string > &parameters, const Issue *cause=0) const
build issue out of all the given parameters
void register_issue(const std::string &name, IssueCreator creator)
register an issue factory
Issue *(*) IssueCreator(const ers::Context &)
FunctionMap m_creators
Issue * create(const std::string &name, const Context &context) const
build an empty issue for a given name
Base class for any user define issue.
Definition Issue.hpp:69
CTB Buffer Issue
std::ostream & operator<<(std::ostream &, const ers::Configuration &)
severity
Definition Severity.hpp:26