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(&mut self, hdr: &Header, _data: &[u8]) -> Result<(), InterfaceSendError> {
25        if hdr.dst.net_node_any() {
26            Err(InterfaceSendError::DestinationLocal)
27        } else {
28            Err(InterfaceSendError::NoRouteToDest)
29        }
30    }
31
32    fn send_err(
33        &mut self,
34        hdr: &Header,
35        _err: crate::ProtocolError,
36    ) -> Result<(), InterfaceSendError> {
37        if hdr.dst.net_node_any() {
38            Err(InterfaceSendError::DestinationLocal)
39        } else {
40            Err(InterfaceSendError::NoRouteToDest)
41        }
42    }
43}