Mir
message_processor_report.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2013 Canonical Ltd.
3  *
4  * This program is free software: you can redistribute it and/or modify it
5  * under the terms of the GNU General Public License version 3,
6  * as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authored by: Alan Griffiths <alan@octopull.co.uk>
17  */
18 
19 #ifndef MIR_REPORT_LOGGING_MESSAGE_PROCESSOR_REPORT_H_
20 #define MIR_REPORT_LOGGING_MESSAGE_PROCESSOR_REPORT_H_
21 
23 #include "mir/time/clock.h"
24 
25 #include <memory>
26 #include <mutex>
27 #include <unordered_map>
28 
29 namespace mir
30 {
31 namespace logging
32 {
33 class Logger;
34 }
35 namespace report
36 {
37 namespace logging
38 {
39 namespace detail
40 {
42 {
46 };
47 
48 typedef std::unordered_map<int, InvocationDetails> Invocations;
49 
51 {
52  Invocations current_invocations;
53 };
54 
55 typedef std::unordered_map<void const*, MediatorDetails> Mediators;
56 }
57 
59 {
60 public:
62  std::shared_ptr<mir::logging::Logger> const& log,
63  std::shared_ptr<time::Clock> const& clock);
64 
65  void received_invocation(void const* mediator, int id, std::string const& method);
66 
67  void completed_invocation(void const* mediator, int id, bool result);
68 
69  void unknown_method(void const* mediator, int id, std::string const& method);
70 
71  void exception_handled(void const* mediator, int id, std::exception const& error);
72 
73  void exception_handled(void const* mediator, std::exception const& error);
74 
75  ~MessageProcessorReport() noexcept(true);
76 
77 private:
78  std::shared_ptr<mir::logging::Logger> const log;
79  std::shared_ptr<time::Clock> const clock;
80  std::mutex mutex;
81  detail::Mediators mediators;
82 };
83 }
84 }
85 }
86 
87 #endif /* MIR_REPORT_LOGGING_MESSAGE_PROCESSOR_REPORT_H_ */
All things Mir.
Definition: atomic_callback.h:25
Definition: message_processor_report.h:58
MessageProcessorReport()
Definition: message_processor_report.h:35
std::unordered_map< void const *, MediatorDetails > Mediators
Definition: message_processor_report.h:55
std::chrono::steady_clock::time_point Timestamp
Definition: types.h:29
void exception_handled(void const *mediator, int id, std::exception const &error)
Definition: message_processor_report.h:32
void unknown_method(void const *mediator, int id, std::string const &method)
void completed_invocation(void const *mediator, int id, bool result)
std::string method
Definition: message_processor_report.h:44
Invocations current_invocations
Definition: message_processor_report.h:52
error
Definition: connector_report_tp.h:60
Definition: message_processor_report.h:50
std::string exception
Definition: message_processor_report.h:45
Definition: message_processor_report.h:41
std::unordered_map< int, InvocationDetails > Invocations
Definition: message_processor_report.h:48
void received_invocation(void const *mediator, int id, std::string const &method)
time::Timestamp start
Definition: message_processor_report.h:43

Copyright © 2012-2015 Canonical Ltd.
Generated on Thu Oct 8 16:20:16 UTC 2015