tramex_tools/interface/
interface_types.rs

1//! Interface module
2
3use 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
10/// Interface enum
11pub enum Interface {
12    /// WebSocket connection
13    #[cfg(feature = "websocket")]
14    Ws(WsConnection),
15
16    /// File
17    File(File),
18}
19
20/// Interface trait
21pub trait InterfaceTrait {
22    /// Get more data
23    /// # Errors
24    /// Return an error if the data is not received correctly
25    fn get_more_data(&mut self, _layer_list: Layers, data: &mut Data) -> Result<(), Vec<TramexError>>;
26
27    /// Try to close the interface
28    /// # Errors
29    /// Return an error if its fail
30    fn close(&mut self) -> Result<(), TramexError>;
31}
32
33impl core::fmt::Debug for Interface {
34    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
35        f.debug_struct("Interface")
36            .field(
37                "field",
38                match self {
39                    #[cfg(feature = "websocket")]
40                    Interface::Ws(ws) => ws,
41                    Interface::File(file) => file,
42                },
43            )
44            .finish()
45    }
46}