tramex_tools/interface/
log_get.rs

1//! LogGet struct for sending log_get message to the server
2use crate::interface::layer::Layers;
3
4#[derive(serde::Serialize, serde::Deserialize, Debug)]
5/// LogGet struct
6pub struct LogGet {
7    /// Message
8    message: String,
9
10    /// Message ID
11    message_id: u64,
12
13    /// Timeout in seconds - server waits this long for logs before responding
14    timeout: u64,
15
16    /// Minimum size of the log
17    min: u64,
18
19    /// Maximum size of the log
20    max: u64,
21
22    /// Layers
23    layers: Layers,
24
25    /// Headers
26    headers: bool,
27
28    /// Start timestamp
29    start_timestamp: i64,
30}
31
32impl LogGet {
33    /// Create a new LogGet struct
34    /// Note: layers_list parameter is ignored - we always request ALL layers
35    /// The filtering is done by the Application, not by the server
36    pub fn new(id: u64, _layers_list: Layers, max_size: u64) -> Self {
37        let max_size = max_size.clamp(64, 4096);
38        const HOURS_TO_FETCH: i64 = 12;
39        Self {
40            message: "log_get".to_owned(),
41            message_id: id,
42            timeout: 1,
43            min: 64,
44            max: max_size,
45            layers: Layers::all_debug(), // Always request all layers
46            headers: false,
47            start_timestamp: chrono::Utc::now().timestamp() - HOURS_TO_FETCH * 3600, // only fetch last 12h
48        }
49    }
50}