qbit_rs/model/
log.rs

1use std::net::IpAddr;
2
3use serde_with::skip_serializing_none;
4
5#[derive(Debug, Clone, serde::Deserialize, PartialEq, Eq)]
6
7pub struct Log {
8    /// ID of the message
9    pub id: u64,
10    /// Text of the message
11    pub message: String,
12    /// Milliseconds since epoch
13    pub timestamp: u64,
14    /// Type of the message: Log::NORMAL: `1`, Log::INFO: `2`, Log::WARNING:
15    /// `4`, Log::CRITICAL: `8`
16    #[serde(rename = "type")]
17    pub log_type: i8,
18}
19
20#[derive(Debug, Clone, serde::Deserialize, PartialEq, Eq)]
21pub struct PeerLog {
22    /// ID of the peer
23    pub id: i64,
24    /// IP of the peer
25    pub ip: IpAddr,
26    /// Milliseconds since epoch
27    pub timestamp: u64,
28    /// Whether or not the peer was blocked
29    pub blocked: bool,
30    /// Reason of the block
31    pub reason: Option<String>,
32}
33
34#[derive(
35    Debug,
36    Clone,
37    Copy,
38    PartialEq,
39    Eq,
40    PartialOrd,
41    Ord,
42    serde_repr::Serialize_repr,
43    serde_repr::Deserialize_repr,
44)]
45#[repr(i8)]
46pub enum LogLevel {
47    Normal   = 1,
48    Info     = 2,
49    Warning  = 4,
50    Critical = 8,
51}
52
53#[cfg_attr(feature = "builder", derive(typed_builder::TypedBuilder))]
54#[cfg_attr(
55    feature = "builder",
56    builder(field_defaults(default, setter(strip_option)))
57)]
58#[derive(Debug, Clone, serde::Serialize, PartialEq, Eq)]
59#[skip_serializing_none]
60pub struct GetLogsArg {
61    /// Include normal messages (default: `true`)
62    pub normal: Option<bool>,
63    /// Include info messages (default: `true`)
64    pub info: Option<bool>,
65    /// Include warning messages (default: `true`)
66    pub warning: Option<bool>,
67    /// Include critical messages (default: `true`)
68    pub critical: Option<bool>,
69    /// Exclude messages with "message id" <= `last_known_id` (default: `-1`)
70    pub last_known_id: Option<i64>,
71}