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}