From 50da6bfa5ce21dddb2bf943706e190ef95beb43b Mon Sep 17 00:00:00 2001 From: chriseth Date: Tue, 20 Dec 2022 21:16:28 +0100 Subject: [PATCH] Support binary safe file for json-rpc server. --- src/server.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/server.rs b/src/server.rs index bdbe780..767f89c 100644 --- a/src/server.rs +++ b/src/server.rs @@ -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>, file: &String) -> Result>, file: &str) -> Result> { + 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,