ergot_base/interface_manager/
null.rs

1use serde::Serialize;
2
3use crate::Header;
4
5use super::{ConstInit, InterfaceManager, InterfaceSendError};
6
7pub struct NullInterfaceManager {
8    _priv: (),
9}
10
11impl ConstInit for NullInterfaceManager {
12    const INIT: Self = Self { _priv: () };
13}
14
15impl InterfaceManager for NullInterfaceManager {
16    fn send<T: Serialize>(&mut self, hdr: &Header, _data: &T) -> Result<(), InterfaceSendError> {
17        if hdr.dst.net_node_any() {
18            Err(InterfaceSendError::DestinationLocal)
19        } else {
20            Err(InterfaceSendError::NoRouteToDest)
21        }
22    }
23
24    fn send_raw(
25        &mut self,
26        hdr: &Header,
27        _hdr_raw: &[u8],
28        _data: &[u8],
29    ) -> Result<(), InterfaceSendError> {
30        if hdr.dst.net_node_any() {
31            Err(InterfaceSendError::DestinationLocal)
32        } else {
33            Err(InterfaceSendError::NoRouteToDest)
34        }
35    }
36
37    fn send_err(
38        &mut self,
39        hdr: &Header,
40        _err: crate::ProtocolError,
41    ) -> Result<(), InterfaceSendError> {
42        if hdr.dst.net_node_any() {
43            Err(InterfaceSendError::DestinationLocal)
44        } else {
45            Err(InterfaceSendError::NoRouteToDest)
46        }
47    }
48}