tramex_tools/interface/
interface_types.rs1use crate::data::Data;
4use crate::errors::TramexError;
5use crate::interface::interface_file::file_handler::File;
6use crate::interface::layer::Layers;
7#[cfg(feature = "websocket")]
8use crate::interface::websocket::ws_connection::WsConnection;
9
10pub enum Interface {
12 #[cfg(feature = "websocket")]
14 Ws(WsConnection),
15
16 File(File),
18}
19
20pub trait InterfaceTrait {
22 fn get_more_data(&mut self, _layer_list: Layers, data: &mut Data) -> Result<(), Vec<TramexError>>;
26
27 fn close(&mut self) -> Result<(), TramexError>;
31
32 fn supports_preloading(&self) -> bool {
34 false
35 }
36
37 fn get_total_event_count(&self) -> Option<usize> {
39 None
40 }
41
42 fn is_fully_read(&self) -> bool;
44}
45
46impl core::fmt::Debug for Interface {
47 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
48 f.debug_struct("Interface")
49 .field(
50 "field",
51 match self {
52 #[cfg(feature = "websocket")]
53 Interface::Ws(ws) => ws,
54 Interface::File(file) => file,
55 },
56 )
57 .finish()
58 }
59}