use crate::{
protocol_client::Lib3hClientProtocol, protocol_server::Lib3hServerProtocol, DidWork,
Lib3hResult,
};
pub trait NetworkEngine {
fn run(&self) -> Lib3hResult<()>;
fn stop(&self) -> Lib3hResult<()>;
fn terminate(&self) -> Lib3hResult<()>;
fn post(&mut self, data: Lib3hClientProtocol) -> Lib3hResult<()>;
fn process(&mut self) -> Lib3hResult<(DidWork, Vec<Lib3hServerProtocol>)>;
fn advertise(&self) -> String;
}