X-Git-Url: https://code.octet-stream.net/m17rt/blobdiff_plain/ed89ed42024f30e94e27084ec2b9ee0acb038b62..bd5155840661f90aab8c06413fb1e9f256824b55:/m17app/src/tnc.rs?ds=sidebyside diff --git a/m17app/src/tnc.rs b/m17app/src/tnc.rs index 921585b..e7799b4 100644 --- a/m17app/src/tnc.rs +++ b/m17app/src/tnc.rs @@ -6,8 +6,20 @@ use std::io::{Read, Write}; /// via a working implementation of try_clone(). We do not require `Clone` directly /// as this could not be fulfilled by `TcpStream`. pub trait Tnc: Read + Write + Sized + Send + 'static { + /// Return a copy of this TNC. + /// + /// `M17App` will use this to create a second instance of the supplied TNC then use + /// one of them for reading and one of them for writing, concurrently across two threads. + /// + /// Implementations do not need to worry about trying to make two simultaneous reads or + /// two simultaneous writes do something sensible. `M17App` will not do this and it would + /// probably produce garbled KISS messages anyway. fn try_clone(&mut self) -> Result; + + /// Start I/O. fn start(&mut self) -> Result<(), TncError>; + + /// Shut down I/O - it is assumed we cannot restart. fn close(&mut self) -> Result<(), TncError>; }