Support binary safe file for json-rpc server.

This commit is contained in:
chriseth 2022-12-20 21:16:28 +01:00
parent 32bc0786a8
commit 50da6bfa5c

View file

@ -1,5 +1,5 @@
use crate::graph;
use crate::io::{read_edges_binary, read_edges_csv};
use crate::io::{import_from_safes_binary, read_edges_binary, read_edges_csv};
use crate::types::edge::EdgeDB;
use crate::types::{Address, Edge, U256};
use json::JsonValue;
@ -75,6 +75,15 @@ fn handle_connection(
};
socket.write_all(response.as_bytes())?;
}
"load_safes_binary" => {
let response = match load_safes_binary(edges, &request.params["file"].to_string()) {
Ok(len) => jsonrpc_response(request.id, len),
Err(e) => {
jsonrpc_error_response(request.id, -32000, &format!("Error loading edges: {e}"))
}
};
socket.write_all(response.as_bytes())?;
}
"compute_transfer" => {
println!("Computing flow");
let e = edges.read().unwrap().clone();
@ -116,6 +125,13 @@ fn load_edges_csv(edges: &RwLock<Arc<EdgeDB>>, file: &String) -> Result<usize, B
Ok(len)
}
fn load_safes_binary(edges: &RwLock<Arc<EdgeDB>>, file: &str) -> Result<usize, Box<dyn Error>> {
let updated_edges = import_from_safes_binary(file)?.edges().clone();
let len = updated_edges.edge_count();
*edges.write().unwrap() = Arc::new(updated_edges);
Ok(len)
}
fn compute_transfer(
request: JsonRpcRequest,
edges: &EdgeDB,