From: Ian Jackson Date: Thu, 13 Aug 2020 17:31:28 +0000 (+0100) Subject: mgmtchannel dyn X-Git-Tag: otter-0.2.0~1133 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=35a9fad8deb135814cfbaf55d7b17c51e569c2d3;p=otter.git mgmtchannel dyn --- diff --git a/src/bin/otter.rs b/src/bin/otter.rs index 2c4128ab..31b7edad 100644 --- a/src/bin/otter.rs +++ b/src/bin/otter.rs @@ -178,12 +178,13 @@ fn main() { call(sc, ma.opts, subargs).expect("execution error"); } -type Conn = MgmtChannel; +type Conn = MgmtChannel; -fn connect(ma: &MainOpts) -> Result<(),E> { +#[throws(E)] +fn connect(ma: &MainOpts) -> MgmtChannel { let unix = UnixStream::connect(SOCKET_PATH).context("connect to server")?; - - todo!() + let chan = MgmtChannel::new(unix)?; + chan } inventory::submit!{Subcommand( @@ -208,7 +209,7 @@ inventory::submit!{Subcommand( let chan = connect(&mainopts)?; - eprintln!("CREATE-TABLE {:?} {:?} {:?}", &mainopts, &args, &chan); + eprintln!("CREATE-TABLE {:?} {:?}", &mainopts, &args); Ok(()) } )} diff --git a/src/cmdlistener.rs b/src/cmdlistener.rs index 93dd7179..47ca1d1f 100644 --- a/src/cmdlistener.rs +++ b/src/cmdlistener.rs @@ -32,7 +32,7 @@ struct CommandStream<'d> { desc : &'d str, scope : Option, amu : Option, - chan : MgmtChannel, + chan : MgmtChannel, } type CSE = anyhow::Error; diff --git a/src/mgmtchannel.rs b/src/mgmtchannel.rs index 0ca3216d..efe771bb 100644 --- a/src/mgmtchannel.rs +++ b/src/mgmtchannel.rs @@ -9,19 +9,19 @@ pub enum MgmtChannelReadError { } display_as_debug!{MgmtChannelReadError} -#[derive(Debug)] -pub struct MgmtChannel { - read : io::Lines>, - write : BufWriter, +pub struct MgmtChannel { + read : io::Lines>>, + write : BufWriter>, } -impl MgmtChannel { +impl MgmtChannel { #[throws(AE)] - pub fn new(conn: U) -> MgmtChannel { + pub fn new(conn: U) -> MgmtChannel { let read = conn.try_clone().context("dup the command stream")?; + let read = Box::new(read) as Box; let read = BufReader::new(read); let read = read.lines(); - let write = conn; + let write = Box::new(conn) as Box; let write = BufWriter::new(write); MgmtChannel { read, write } } diff --git a/src/spec.rs b/src/spec.rs index 35310aab..d6fae933 100644 --- a/src/spec.rs +++ b/src/spec.rs @@ -42,7 +42,7 @@ struct UrlOnStdout; #[typetag::serde] impl PlayerAccessSpec for UrlOnStdout { - fn deliver_token_client(&self, conn: &mut (), nick: &str) + fn deliver_token_client(&self, _conn: &mut (), _nick: &str) -> Result<(),anyhow::Error> { todo!() }