1use crate::trace::{ProtoTraceEvent, TraceEvent};
24use core::fmt::Debug;
25use recon_core::Protocol;
26
27pub(crate) type Render<P> = fn(&ProtoTraceEvent<P>);
31
32pub(crate) fn render<P>(event: &ProtoTraceEvent<P>)
38where
39 P: Protocol,
40 P::Msg: Debug,
41 P::Ind: Debug,
42 P::Note: Debug,
43 P::Cmd: Debug,
44{
45 let at = event.at().as_offset();
46 match event {
47 TraceEvent::Said { node, note, .. } => {
48 tracing::info!(target: "recon_sim", ?at, node = %node, ?note, "said");
49 }
50 TraceEvent::Invoked { node, op, cmd, .. } => {
51 tracing::info!(target: "recon_sim", ?at, node = %node, %op, ?cmd, "invoked");
52 }
53 TraceEvent::NotInvoked { node, op, cmd, why, .. } => {
54 tracing::info!(target: "recon_sim", ?at, node = %node, %op, ?cmd, ?why, "not invoked");
55 }
56 TraceEvent::Sent { from, to, msg, .. } => {
57 tracing::debug!(target: "recon_sim", ?at, node = %from, %to, ?msg, "sent");
58 }
59 TraceEvent::HandedToSelf { node, msg, .. } => {
60 tracing::debug!(target: "recon_sim", ?at, node = %node, ?msg, "handed to self");
61 }
62 TraceEvent::Delivered { from, to, msg, .. } => {
63 tracing::debug!(target: "recon_sim", ?at, node = %to, %from, ?msg, "delivered");
64 }
65 TraceEvent::Dropped { from, to, msg, reason, .. } => {
66 tracing::debug!(target: "recon_sim", ?at, node = %from, %to, ?msg, ?reason, "dropped");
67 }
68 TraceEvent::Duplicated { from, to, msg, .. } => {
69 tracing::debug!(target: "recon_sim", ?at, node = %from, %to, ?msg, "duplicated");
70 }
71 TraceEvent::Reordered { from, to, msg, .. } => {
72 tracing::debug!(target: "recon_sim", ?at, node = %from, %to, ?msg, "reordered");
73 }
74 TraceEvent::TimerFired { node, id, .. } => {
75 tracing::debug!(target: "recon_sim", ?at, node = %node, ?id, "timer fired");
76 }
77 TraceEvent::Indicated { node, ind, .. } => {
78 tracing::debug!(target: "recon_sim", ?at, node = %node, ?ind, "indicated");
79 }
80 TraceEvent::SessionOpened { a, b, epoch, .. } => {
81 tracing::debug!(target: "recon_sim", ?at, %a, %b, epoch, "session opened");
82 }
83 TraceEvent::SessionEnded { a, b, epoch, reason, .. } => {
84 tracing::debug!(target: "recon_sim", ?at, %a, %b, epoch, ?reason, "session ended");
85 }
86 TraceEvent::SuffixLost { from, to, msg, .. } => {
87 tracing::debug!(target: "recon_sim", ?at, node = %from, %to, ?msg, "suffix lost");
88 }
89 TraceEvent::Crashed { node, .. } => {
90 tracing::debug!(target: "recon_sim", ?at, node = %node, "crashed");
91 }
92 TraceEvent::Suspended { node, .. } => {
93 tracing::debug!(target: "recon_sim", ?at, node = %node, "suspended");
94 }
95 TraceEvent::Resumed { node, .. } => {
96 tracing::debug!(target: "recon_sim", ?at, node = %node, "resumed");
97 }
98 TraceEvent::Restarted { node, .. } => {
99 tracing::debug!(target: "recon_sim", ?at, node = %node, "restarted");
100 }
101 TraceEvent::Wrote { node, kind, .. } => {
102 tracing::debug!(target: "recon_sim", ?at, node = %node, ?kind, "wrote");
103 }
104 TraceEvent::DiedWriting { node, .. } => {
105 tracing::debug!(target: "recon_sim", ?at, node = %node, "died writing");
106 }
107 TraceEvent::Recovered { node, had_state, .. } => {
108 tracing::debug!(target: "recon_sim", ?at, node = %node, had_state, "recovered");
109 }
110 }
111}