mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-04-28 03:00:18 -04:00
dnetview: use the new rpc client api
This commit is contained in:
@@ -3,7 +3,7 @@ use std::{collections::hash_map::Entry, fs::File, io, io::Read, path::PathBuf};
|
||||
|
||||
use easy_parallel::Parallel;
|
||||
use fxhash::{FxHashMap, FxHashSet};
|
||||
use log::{debug, info};
|
||||
use log::info;
|
||||
use serde_json::{json, Value};
|
||||
use simplelog::*;
|
||||
use smol::Executor;
|
||||
@@ -16,8 +16,8 @@ use tui::{
|
||||
use url::Url;
|
||||
|
||||
use darkfi::{
|
||||
error::{Error, Result},
|
||||
rpc::{jsonrpc, jsonrpc::JsonResult},
|
||||
error::Result,
|
||||
rpc::{jsonrpc, rpcclient::RpcClient},
|
||||
util::{
|
||||
async_util,
|
||||
cli::{log_config, spawn_config, Config},
|
||||
@@ -35,51 +35,28 @@ use dnetview::{
|
||||
};
|
||||
|
||||
struct DnetView {
|
||||
url: Url,
|
||||
name: String,
|
||||
rpc_client: RpcClient,
|
||||
}
|
||||
|
||||
impl DnetView {
|
||||
fn new(url: Url, name: String) -> Self {
|
||||
Self { url, name }
|
||||
}
|
||||
|
||||
async fn request(&self, r: jsonrpc::JsonRequest) -> Result<Value> {
|
||||
let reply: JsonResult = match jsonrpc::send_request(&self.url, json!(r)).await {
|
||||
Ok(v) => v,
|
||||
Err(e) => return Err(e),
|
||||
};
|
||||
|
||||
match reply {
|
||||
JsonResult::Resp(r) => {
|
||||
debug!(target: "RPC", "<-- {}", serde_json::to_string(&r)?);
|
||||
Ok(r.result)
|
||||
}
|
||||
|
||||
JsonResult::Err(e) => {
|
||||
debug!(target: "RPC", "<-- {}", serde_json::to_string(&e)?);
|
||||
Err(Error::JsonRpcError(e.error.message.to_string()))
|
||||
}
|
||||
|
||||
JsonResult::Notif(n) => {
|
||||
debug!(target: "RPC", "<-- {}", serde_json::to_string(&n)?);
|
||||
Err(Error::JsonRpcError("Unexpected reply".to_string()))
|
||||
}
|
||||
}
|
||||
async fn new(url: Url, name: String, executor: Arc<Executor<'_>>) -> Result<Self> {
|
||||
let rpc_client = RpcClient::new(url, executor).await?;
|
||||
Ok(Self { name, rpc_client })
|
||||
}
|
||||
|
||||
// --> {"jsonrpc": "2.0", "method": "ping", "params": [], "id": 42}
|
||||
// <-- {"jsonrpc": "2.0", "result": "pong", "id": 42}
|
||||
async fn _ping(&self) -> Result<Value> {
|
||||
let req = jsonrpc::request(json!("ping"), json!([]));
|
||||
Ok(self.request(req).await?)
|
||||
Ok(self.rpc_client.request(req).await?)
|
||||
}
|
||||
|
||||
//--> {"jsonrpc": "2.0", "method": "poll", "params": [], "id": 42}
|
||||
// <-- {"jsonrpc": "2.0", "result": {"nodeID": [], "nodeinfo" [], "id": 42}
|
||||
async fn get_info(&self) -> Result<Value> {
|
||||
let req = jsonrpc::request(json!("get_info"), json!([]));
|
||||
Ok(self.request(req).await?)
|
||||
Ok(self.rpc_client.request(req).await?)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,7 +118,8 @@ async fn poll_and_update_model(
|
||||
model: Arc<Model>,
|
||||
) -> DnetViewResult<()> {
|
||||
for node in &config.nodes {
|
||||
let client = DnetView::new(Url::parse(&node.rpc_url)?, node.name.clone());
|
||||
let client =
|
||||
DnetView::new(Url::parse(&node.rpc_url)?, node.name.clone(), ex.clone()).await?;
|
||||
ex.spawn(poll(client, model.clone())).detach();
|
||||
}
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user