aptos_logger_link/
event.rs1use crate::{Metadata, Schema};
5use std::fmt;
6
7#[derive(Debug)]
9pub struct Event<'a> {
10 metadata: &'a Metadata,
11 message: Option<fmt::Arguments<'a>>,
13 keys_and_values: KeysAndValues<'a>,
14}
15
16impl<'a> Event<'a> {
17 fn new(
18 metadata: &'a Metadata,
19 message: Option<fmt::Arguments<'a>>,
20 keys_and_values: &'a [&'a dyn Schema],
21 ) -> Self {
22 Self {
23 metadata,
24 message,
25 keys_and_values: KeysAndValues(keys_and_values),
26 }
27 }
28
29 pub fn dispatch(
30 metadata: &'a Metadata,
31 message: Option<fmt::Arguments<'a>>,
32 keys_and_values: &'a [&'a dyn Schema],
33 ) {
34 let event = Event::new(metadata, message, keys_and_values);
35 crate::logger::dispatch(&event)
36 }
37
38 pub fn metadata(&self) -> &'a Metadata {
39 self.metadata
40 }
41
42 pub fn message(&self) -> Option<fmt::Arguments<'a>> {
43 self.message
44 }
45
46 pub fn keys_and_values(&self) -> &'a [&'a dyn Schema] {
47 self.keys_and_values.0
48 }
49}
50
51#[derive(Clone)]
53struct KeysAndValues<'a>(&'a [&'a dyn Schema]);
54
55impl<'a> fmt::Debug for KeysAndValues<'a> {
56 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
57 let mut visitor = f.debug_map();
58 for key_value in self.0 {
59 key_value.visit(&mut visitor);
60 }
61 visitor.finish()
62 }
63}