|
@@ -152,76 +152,76 @@ async fn poll(client: Map, model: Arc<Model>) -> Result<()> {
|
|
|
debug!("Attemping to poll: {}", client.url);
|
|
debug!("Attemping to poll: {}", client.url);
|
|
|
// TODO: fix this! this can lag forever
|
|
// TODO: fix this! this can lag forever
|
|
|
// check connect() on net/connector.rs
|
|
// check connect() on net/connector.rs
|
|
|
- let reply = client.ping().await?;
|
|
|
|
|
- if reply.as_str().is_some() {
|
|
|
|
|
- let mut index = 0;
|
|
|
|
|
- loop {
|
|
|
|
|
- debug!("Connected to: {}", client.url);
|
|
|
|
|
- let reply = client.get_info().await?;
|
|
|
|
|
-
|
|
|
|
|
- if reply.as_object().is_some() && !reply.as_object().unwrap().is_empty() {
|
|
|
|
|
- let id = reply.as_object().unwrap().get("id").unwrap();
|
|
|
|
|
-
|
|
|
|
|
- let connections = reply.as_object().unwrap().get("connections").unwrap();
|
|
|
|
|
- let outgoing = connections.get("outgoing").unwrap();
|
|
|
|
|
- let incoming = connections.get("incoming").unwrap();
|
|
|
|
|
-
|
|
|
|
|
- let mut outconnects = Vec::new();
|
|
|
|
|
- let mut inconnects = Vec::new();
|
|
|
|
|
-
|
|
|
|
|
- // here we are simulating new messages by scrolling through a vector
|
|
|
|
|
- let msgs = outgoing[1].get("message").unwrap();
|
|
|
|
|
- if index == 0 {
|
|
|
|
|
- index += 1;
|
|
|
|
|
- } else if index >= 5 {
|
|
|
|
|
- index = 0
|
|
|
|
|
- } else {
|
|
|
|
|
- index = index + 1;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ //let reply = client.ping().await?;
|
|
|
|
|
+ //if reply.as_str().is_some() {
|
|
|
|
|
+ let mut index = 0;
|
|
|
|
|
+ loop {
|
|
|
|
|
+ //debug!("Connected to: {}", client.url);
|
|
|
|
|
+ let reply = client.get_info().await?;
|
|
|
|
|
|
|
|
- let out0 = Connection::new(
|
|
|
|
|
- outgoing[0].get("id").unwrap().as_str().unwrap().to_string(),
|
|
|
|
|
- msgs[index].as_str().unwrap().to_string(),
|
|
|
|
|
- );
|
|
|
|
|
- let out1 = Connection::new(
|
|
|
|
|
- outgoing[1].get("id").unwrap().as_str().unwrap().to_string(),
|
|
|
|
|
- msgs[index].as_str().unwrap().to_string(),
|
|
|
|
|
- );
|
|
|
|
|
-
|
|
|
|
|
- let in0 = Connection::new(
|
|
|
|
|
- incoming[0].get("id").unwrap().as_str().unwrap().to_string(),
|
|
|
|
|
- msgs[index].as_str().unwrap().to_string(),
|
|
|
|
|
- );
|
|
|
|
|
- let in1 = Connection::new(
|
|
|
|
|
- incoming[1].get("id").unwrap().as_str().unwrap().to_string(),
|
|
|
|
|
- msgs[index].as_str().unwrap().to_string(),
|
|
|
|
|
- );
|
|
|
|
|
-
|
|
|
|
|
- outconnects.push(out0);
|
|
|
|
|
- outconnects.push(out1);
|
|
|
|
|
-
|
|
|
|
|
- inconnects.push(in0);
|
|
|
|
|
- inconnects.push(in1);
|
|
|
|
|
-
|
|
|
|
|
- let infos = NodeInfo { outgoing: outconnects, incoming: inconnects };
|
|
|
|
|
-
|
|
|
|
|
- let mut node_info = HashMap::new();
|
|
|
|
|
- node_info.insert(id.as_str().unwrap().to_string(), infos);
|
|
|
|
|
-
|
|
|
|
|
- for (id, value) in node_info.clone() {
|
|
|
|
|
- model.id_list.node_id.lock().await.insert(id.clone());
|
|
|
|
|
- model.info_list.infos.lock().await.insert(id, value);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if reply.as_object().is_some() && !reply.as_object().unwrap().is_empty() {
|
|
|
|
|
+ let id = reply.as_object().unwrap().get("id").unwrap();
|
|
|
|
|
+
|
|
|
|
|
+ let connections = reply.as_object().unwrap().get("connections").unwrap();
|
|
|
|
|
+ let outgoing = connections.get("outgoing").unwrap();
|
|
|
|
|
+ let incoming = connections.get("incoming").unwrap();
|
|
|
|
|
+
|
|
|
|
|
+ let mut outconnects = Vec::new();
|
|
|
|
|
+ let mut inconnects = Vec::new();
|
|
|
|
|
+
|
|
|
|
|
+ // here we are simulating new messages by scrolling through a vector
|
|
|
|
|
+ let msgs = outgoing[1].get("message").unwrap();
|
|
|
|
|
+ if index == 0 {
|
|
|
|
|
+ index += 1;
|
|
|
|
|
+ } else if index >= 5 {
|
|
|
|
|
+ index = 0
|
|
|
} else {
|
|
} else {
|
|
|
- // TODO: error handling
|
|
|
|
|
- debug!("Reply is empty");
|
|
|
|
|
|
|
+ index = index + 1;
|
|
|
}
|
|
}
|
|
|
- async_util::sleep(2).await;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ let out0 = Connection::new(
|
|
|
|
|
+ outgoing[0].get("id").unwrap().as_str().unwrap().to_string(),
|
|
|
|
|
+ msgs[index].as_str().unwrap().to_string(),
|
|
|
|
|
+ );
|
|
|
|
|
+ let out1 = Connection::new(
|
|
|
|
|
+ outgoing[1].get("id").unwrap().as_str().unwrap().to_string(),
|
|
|
|
|
+ msgs[index].as_str().unwrap().to_string(),
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ let in0 = Connection::new(
|
|
|
|
|
+ incoming[0].get("id").unwrap().as_str().unwrap().to_string(),
|
|
|
|
|
+ msgs[index].as_str().unwrap().to_string(),
|
|
|
|
|
+ );
|
|
|
|
|
+ let in1 = Connection::new(
|
|
|
|
|
+ incoming[1].get("id").unwrap().as_str().unwrap().to_string(),
|
|
|
|
|
+ msgs[index].as_str().unwrap().to_string(),
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ outconnects.push(out0);
|
|
|
|
|
+ outconnects.push(out1);
|
|
|
|
|
+
|
|
|
|
|
+ inconnects.push(in0);
|
|
|
|
|
+ inconnects.push(in1);
|
|
|
|
|
+
|
|
|
|
|
+ let infos = NodeInfo { outgoing: outconnects, incoming: inconnects };
|
|
|
|
|
+
|
|
|
|
|
+ let mut node_info = HashMap::new();
|
|
|
|
|
+ node_info.insert(id.as_str().unwrap().to_string(), infos);
|
|
|
|
|
+
|
|
|
|
|
+ for (id, value) in node_info.clone() {
|
|
|
|
|
+ model.id_list.node_id.lock().await.insert(id.clone());
|
|
|
|
|
+ model.info_list.infos.lock().await.insert(id, value);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // TODO: error handling
|
|
|
|
|
+ debug!("Reply is empty");
|
|
|
}
|
|
}
|
|
|
- } else {
|
|
|
|
|
- async_util::sleep(10).await;
|
|
|
|
|
- Err(Error::ConnectTimeout)
|
|
|
|
|
|
|
+ async_util::sleep(2).await;
|
|
|
}
|
|
}
|
|
|
|
|
+ //} else {
|
|
|
|
|
+ // async_util::sleep(10).await;
|
|
|
|
|
+ // Err(Error::ConnectTimeout)
|
|
|
|
|
+ //}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async fn render<B: Backend>(terminal: &mut Terminal<B>, model: Arc<Model>) -> io::Result<()> {
|
|
async fn render<B: Backend>(terminal: &mut Terminal<B>, model: Arc<Model>) -> io::Result<()> {
|
|
@@ -235,37 +235,37 @@ async fn render<B: Backend>(terminal: &mut Terminal<B>, model: Arc<Model>) -> io
|
|
|
|
|
|
|
|
view.id_list.state.select(Some(0));
|
|
view.id_list.state.select(Some(0));
|
|
|
view.info_list.index = 0;
|
|
view.info_list.index = 0;
|
|
|
- let mut counter = 0;
|
|
|
|
|
|
|
+ //let mut counter = 0;
|
|
|
|
|
|
|
|
loop {
|
|
loop {
|
|
|
- counter = counter + 1;
|
|
|
|
|
|
|
+ //counter = counter + 1;
|
|
|
view.update(model.info_list.infos.lock().await.clone());
|
|
view.update(model.info_list.infos.lock().await.clone());
|
|
|
- if view.id_list.node_id.is_empty() {
|
|
|
|
|
- // TODO: delete this and display empty data
|
|
|
|
|
- if counter == 1 {
|
|
|
|
|
- let mut progress = 0;
|
|
|
|
|
- while progress < 100 {
|
|
|
|
|
- terminal.draw(|f| {
|
|
|
|
|
- ui::init_panel(f, progress);
|
|
|
|
|
- })?;
|
|
|
|
|
- Timer::after(Duration::from_millis(1)).await;
|
|
|
|
|
- progress = progress + 1;
|
|
|
|
|
- }
|
|
|
|
|
- } else if counter == 2 {
|
|
|
|
|
- terminal.clear()?;
|
|
|
|
|
- // TODO: continue to display not, mark as offline
|
|
|
|
|
- println!("Could not connect to node. Are you sure RPC is running?");
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- terminal.draw(|f| {
|
|
|
|
|
- ui::ui(f, view.clone());
|
|
|
|
|
- })?;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ //if view.id_list.node_id.is_empty() {
|
|
|
|
|
+ // // TODO: delete this and display empty data
|
|
|
|
|
+ // if counter == 1 {
|
|
|
|
|
+ // let mut progress = 0;
|
|
|
|
|
+ // while progress < 100 {
|
|
|
|
|
+ // terminal.draw(|f| {
|
|
|
|
|
+ // ui::init_panel(f, progress);
|
|
|
|
|
+ // })?;
|
|
|
|
|
+ // Timer::after(Duration::from_millis(1)).await;
|
|
|
|
|
+ // progress = progress + 1;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // } else if counter == 2 {
|
|
|
|
|
+ // terminal.clear()?;
|
|
|
|
|
+ // // TODO: continue to display not, mark as offline
|
|
|
|
|
+ // println!("Could not connect to node. Are you sure RPC is running?");
|
|
|
|
|
+ // }
|
|
|
|
|
+ //} else {
|
|
|
|
|
+ terminal.draw(|f| {
|
|
|
|
|
+ ui::ui(f, view.clone());
|
|
|
|
|
+ })?;
|
|
|
|
|
+ //}
|
|
|
for k in asi.by_ref().keys() {
|
|
for k in asi.by_ref().keys() {
|
|
|
match k.unwrap() {
|
|
match k.unwrap() {
|
|
|
Key::Char('q') => {
|
|
Key::Char('q') => {
|
|
|
terminal.clear()?;
|
|
terminal.clear()?;
|
|
|
- return Ok(())
|
|
|
|
|
|
|
+ return Ok(());
|
|
|
}
|
|
}
|
|
|
Key::Char('j') => {
|
|
Key::Char('j') => {
|
|
|
view.id_list.next();
|
|
view.id_list.next();
|