Line data Source code
1 : #include <ers/Schema.hpp>
2 :
3 : // converters with allocation
4 : dunedaq::ersschema::Context
5 0 : ers::to_schema(const Context& c)
6 : {
7 :
8 0 : dunedaq::ersschema::Context out;
9 0 : to_schema(c, out);
10 0 : return out;
11 0 : }
12 :
13 : dunedaq::ersschema::SimpleIssue
14 0 : ers::to_schema(const Issue& i)
15 : {
16 :
17 0 : dunedaq::ersschema::SimpleIssue out;
18 0 : to_schema(i, out);
19 0 : return out;
20 0 : }
21 :
22 : dunedaq::ersschema::IssueChain
23 0 : ers::to_schema_chain(const Issue& i)
24 : {
25 :
26 0 : dunedaq::ersschema::IssueChain out;
27 0 : to_schema(i, out);
28 0 : return out;
29 0 : }
30 :
31 : void
32 0 : ers::to_schema(const Context& c, dunedaq::ersschema::Context& out)
33 : {
34 :
35 0 : out.set_cwd(c.cwd());
36 0 : out.set_file_name(c.file_name());
37 0 : out.set_function_name(c.function_name());
38 0 : out.set_host_name(c.host_name());
39 0 : out.set_line_number(c.line_number());
40 0 : out.set_package_name(c.package_name());
41 :
42 0 : out.set_process_id(c.process_id());
43 0 : out.set_thread_id(c.thread_id());
44 0 : out.set_user_id(c.user_id());
45 0 : out.set_user_name(c.user_name());
46 0 : out.set_application_name(c.application_name());
47 0 : }
48 :
49 : void
50 0 : ers::to_schema(const Issue& i, dunedaq::ersschema::SimpleIssue& out)
51 : {
52 :
53 0 : auto c = to_schema(i.context());
54 :
55 0 : (*out.mutable_context()) = c;
56 :
57 0 : out.set_name(i.get_class_name());
58 :
59 0 : auto inheritance = i.get_class_inheritance();
60 0 : for (auto& c : inheritance) {
61 0 : out.add_inheritance(c);
62 : }
63 :
64 0 : out.set_message(i.message());
65 0 : out.set_severity(ers::to_string(i.severity()));
66 0 : auto time = std::chrono::duration_cast<std::chrono::nanoseconds>(i.ptime().time_since_epoch()).count();
67 0 : out.set_time(time);
68 :
69 0 : auto& params = (*out.mutable_parameters());
70 0 : for (auto p : i.parameters()) {
71 0 : params[p.first] = p.second;
72 0 : }
73 0 : }
74 :
75 : void
76 0 : ers::to_schema(const Issue& i, dunedaq::ersschema::IssueChain& out)
77 : {
78 :
79 0 : (*out.mutable_final()) = to_schema(i);
80 :
81 0 : auto cause_ptr = i.cause();
82 :
83 0 : while (cause_ptr) {
84 0 : auto ptr = out.add_causes();
85 0 : to_schema(*cause_ptr, *ptr);
86 0 : ptr->set_severity(ers::to_string(i.severity())); // severity is forced to be the same as the top issue
87 0 : cause_ptr = cause_ptr->cause();
88 : }
89 0 : }
|