From 6c8b1738e15b376d94e1a0846a9e2588fb74c19a Mon Sep 17 00:00:00 2001 From: rachel-rose Date: Tue, 11 May 2021 16:20:19 +0200 Subject: [PATCH] updated daemon to work with rpc interface --- src/bin/dfi.rs | 128 ++++++++++++++++++++++++------------------------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/src/bin/dfi.rs b/src/bin/dfi.rs index ab1b4f560..a40eae9c6 100644 --- a/src/bin/dfi.rs +++ b/src/bin/dfi.rs @@ -11,7 +11,7 @@ use smol::Async; use std::net::SocketAddr; use std::net::TcpListener; use std::sync::Arc; - +use sapvi::rpc::jsonserver::RpcInterface; use sapvi::{net, Result}; /// Listens for incoming connections and serves them. @@ -73,69 +73,69 @@ async fn listen( } } -struct RpcInterface { - p2p: Arc, - started: Mutex, - stop_send: async_channel::Sender<()>, - stop_recv: async_channel::Receiver<()>, -} - -impl RpcInterface { - fn new(p2p: Arc) -> Arc { - let (stop_send, stop_recv) = async_channel::unbounded::<()>(); - - Arc::new(Self { - p2p, - started: Mutex::new(false), - stop_send, - stop_recv, - }) - } - - async fn serve(self: Arc, mut req: Request) -> http_types::Result { - info!("RPC serving {}", req.url()); - - let request = req.body_string().await?; - - let mut io = jsonrpc_core::IoHandler::new(); - io.add_sync_method("say_hello", |_| { - Ok(jsonrpc_core::Value::String("Hello World!".into())) - }); - - let self2 = self.clone(); - io.add_method("get_info", move |_| { - let self2 = self2.clone(); - async move { - Ok(json!({ - "started": *self2.started.lock().await, - "connections": self2.p2p.connections_count().await - })) - } - }); - - let stop_send = self.stop_send.clone(); - io.add_method("stop", move |_| { - let stop_send = stop_send.clone(); - async move { - let _ = stop_send.send(()).await; - Ok(jsonrpc_core::Value::Null) - } - }); - - let response = io - .handle_request_sync(&request) - .ok_or(sapvi::Error::BadOperationType)?; - - let mut res = Response::new(StatusCode::Ok); - res.insert_header("Content-Type", "text/plain"); - res.set_body(response); - Ok(res) - } - - async fn wait_for_quit(self: Arc) -> Result<()> { - Ok(self.stop_recv.recv().await?) - } -} +//struct RpcInterface { +// p2p: Arc, +// started: Mutex, +// stop_send: async_channel::Sender<()>, +// stop_recv: async_channel::Receiver<()>, +//} +// +//impl RpcInterface { +// fn new(p2p: Arc) -> Arc { +// let (stop_send, stop_recv) = async_channel::unbounded::<()>(); +// +// Arc::new(Self { +// p2p, +// started: Mutex::new(false), +// stop_send, +// stop_recv, +// }) +// } +// +// async fn serve(self: Arc, mut req: Request) -> http_types::Result { +// info!("RPC serving {}", req.url()); +// +// let request = req.body_string().await?; +// +// let mut io = jsonrpc_core::IoHandler::new(); +// io.add_sync_method("say_hello", |_| { +// Ok(jsonrpc_core::Value::String("Hello World!".into())) +// }); +// +// let self2 = self.clone(); +// io.add_method("get_info", move |_| { +// let self2 = self2.clone(); +// async move { +// Ok(json!({ +// "started": *self2.started.lock().await, +// "connections": self2.p2p.connections_count().await +// })) +// } +// }); +// +// let stop_send = self.stop_send.clone(); +// io.add_method("stop", move |_| { +// let stop_send = stop_send.clone(); +// async move { +// let _ = stop_send.send(()).await; +// Ok(jsonrpc_core::Value::Null) +// } +// }); +// +// let response = io +// .handle_request_sync(&request) +// .ok_or(sapvi::Error::BadOperationType)?; +// +// let mut res = Response::new(StatusCode::Ok); +// res.insert_header("Content-Type", "text/plain"); +// res.set_body(response); +// Ok(res) +// } +// +// async fn wait_for_quit(self: Arc) -> Result<()> { +// Ok(self.stop_recv.recv().await?) +// } +//} async fn start(executor: Arc>, options: ProgramOptions) -> Result<()> { let p2p = net::P2p::new(options.network_settings);