chiark / gitweb /
wip connect?
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 13 Aug 2020 16:45:39 +0000 (17:45 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 13 Aug 2020 16:45:39 +0000 (17:45 +0100)
src/bin/otter.rs
src/client.rs
src/cmdlistener.rs
src/mgmtchannel.rs
src/spec.rs

index 21a75885c047acc644f6613ce8955748a7533df9..2c4128abbb83f99e33968fd67594f48c86663e7e 100644 (file)
@@ -9,6 +9,8 @@ use std::rc::Rc;
 use std::cell::RefCell;
 use std::cell::Cell;
 
+type E = anyhow::Error;
+
 use argparse::action::ParseResult::Parsed;
 
 #[derive(Clone)]
@@ -58,7 +60,7 @@ struct MainOpts {
 struct Subcommand (
   &'static str, // command
   &'static str, // desc
-  fn(&Subcommand, MainOpts, Vec<String>),
+  fn(&Subcommand, MainOpts, Vec<String>) -> Result<(),E>,
 );
 inventory::collect!(Subcommand);
 
@@ -173,7 +175,15 @@ fn main() {
                             env::args().next().unwrap(),
                             &ma.subcommand));
 
-  call(sc, ma.opts, subargs);
+  call(sc, ma.opts, subargs).expect("execution error");
+}
+
+type Conn = MgmtChannel<UnixStream>;
+
+fn connect(ma: &MainOpts) -> Result<(),E> {
+  let unix = UnixStream::connect(SOCKET_PATH).context("connect to server")?;
+  
+  todo!()
 }
 
 inventory::submit!{Subcommand(
@@ -196,6 +206,9 @@ inventory::submit!{Subcommand(
       Ok(())
     }, None);
 
-    eprintln!("CREATE-TABLE {:?} {:?}", &mainopts, &args);
+    let chan = connect(&mainopts)?;
+
+    eprintln!("CREATE-TABLE {:?} {:?} {:?}", &mainopts, &args, &chan);
+    Ok(())
   }
 )}
index a1124a525521ae388ef5920cef2f5156981324cd..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,14 +0,0 @@
-
-use crate::imports::*;
-
-pub struct MgmtConnection {
-  read : io::Lines<BufReader<UnixStream>>,
-  write : BufWriter<UnixStream>,
-}
-
-impl MgmtConnection {
-  fn connect() {
-    todo!();
-//    let mut both = UnixStream:;connect(SOCKET_PATH)?;
-  }
-}
index e846faea1a518900e6fb393a3c02be84f068e105..93dd717942182a3348d7f45f62ee0440f93aebe1 100644 (file)
@@ -17,7 +17,7 @@ use pwd::Passwd;
 //use serde_json::ser::Serializer;
 //use serde_json::de::{IoRead,StreamDeserializer};
 
-const SOCKET_PATH : &str = "command.socket"; // xxx
+pub const SOCKET_PATH : &str = "command.socket"; // xxx
 
 pub struct CommandListener {
   listener : UnixListener,
index b3f1b4888ae20b05b6034ed383fb5a92066dbfdf..0ca3216dcc52f80c2731f92f3f584069a861a74a 100644 (file)
@@ -41,7 +41,7 @@ impl<U: IoTryClone + Read + Write> MgmtChannel<U> {
   }
 }
 
-trait IoTryClone : Sized {
+pub trait IoTryClone : Sized {
   fn try_clone(&self) -> io::Result<Self>;
 }
 
index d11b4dc365ff865284b7aa33421a9399291b8d34..35310aab4d878f319e74b54d8f1484ec9075b4e7 100644 (file)
@@ -33,7 +33,7 @@ pub struct PiecesSpec {
 
 #[typetag::serde(tag="access")]
 pub trait PlayerAccessSpec : Debug {
-  fn deliver_token_client(&self, conn: &mut MgmtConnection, nick: &str)
+  fn deliver_token_client(&self, conn: &mut ()/*xxx*/, nick: &str)
                           -> Result<(),anyhow::Error>;
 }
 
@@ -42,7 +42,7 @@ struct UrlOnStdout;
 
 #[typetag::serde]
 impl PlayerAccessSpec for UrlOnStdout {
-  fn deliver_token_client(&self, conn: &mut MgmtConnection, nick: &str)
+  fn deliver_token_client(&self, conn: &mut (), nick: &str)
                           -> Result<(),anyhow::Error> {
     todo!()
   }