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