From 35a9fad8deb135814cfbaf55d7b17c51e569c2d3 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 13 Aug 2020 18:31:28 +0100 Subject: [PATCH] mgmtchannel dyn --- src/bin/otter.rs | 11 ++++++----- src/cmdlistener.rs | 2 +- src/mgmtchannel.rs | 14 +++++++------- src/spec.rs | 2 +- 4 files changed, 15 insertions(+), 14 deletions(-) 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!() } -- 2.30.2