Skip to content

Commit 445a454

Browse files
fix server_mode error type (#54)
1 parent a3c46c1 commit 445a454

File tree

2 files changed

+20
-34
lines changed

2 files changed

+20
-34
lines changed

src/main.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -290,22 +290,24 @@ fn serve(opts: ServerOpts) {
290290
let mut circut = circuit_base.clone();
291291
match reader::load_witness_from_array::<Bn256>(witness) {
292292
Ok(witness) => circut.witness = Some(witness),
293-
err => return server::ServerResult::any_error(err),
293+
err => return server::ServerResult::new(validate_only).any_error(err),
294294
}
295295

296296
if validate_only {
297297
match setup.validate_witness(circut) {
298298
Ok(_) => server::ServerResult::new(true).success(),
299-
err => server::ServerResult::any_error(err),
299+
err => server::ServerResult::new(true).any_error(err),
300300
}
301301
} else {
302302
let start = std::time::Instant::now();
303303
match setup.prove(circut) {
304304
Ok(proof) => {
305305
let elapsed = start.elapsed().as_secs_f64();
306306

307-
let ret = server::ServerResult::new(false);
308-
let mut inner: pb::ProveResponse = ret.into();
307+
let mut inner: pb::ProveResponse = match server::ServerResult::new(false) {
308+
server::ServerResult::ForProve(i) => i,
309+
_ => unreachable!(),
310+
};
309311

310312
let (inputs, serialized_proof) = bellman_vk_codegen::serialize_proof(&proof);
311313
inner.proof = serialized_proof.iter().map(ToString::to_string).collect();
@@ -315,7 +317,7 @@ fn serve(opts: ServerOpts) {
315317
server::ServerResult::ForProve(inner).success()
316318
}
317319

318-
err => server::ServerResult::any_error(err),
320+
err => server::ServerResult::new(false).any_error(err),
319321
}
320322
}
321323
})

src/server.rs

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,10 @@ use std::collections::VecDeque;
99
use std::sync::Arc;
1010
use tokio::sync::{mpsc, oneshot, Mutex};
1111

12-
#[derive(Clone, Debug, PartialEq)]
13-
pub struct ErrDetail {
14-
is_valid: bool,
15-
error_msg: String,
16-
}
17-
1812
#[derive(Clone, PartialEq)]
1913
pub enum ServerResult {
2014
ForValidate(pb::ValidateResponse),
2115
ForProve(pb::ProveResponse),
22-
Error(ErrDetail),
23-
}
24-
25-
impl From<ServerResult> for pb::ProveResponse {
26-
fn from(res: ServerResult) -> Self {
27-
match res {
28-
ServerResult::ForValidate(resp) => Self {
29-
is_valid: resp.is_valid,
30-
error_msg: resp.error_msg,
31-
time_cost_secs: 0.0,
32-
proof: Vec::new(),
33-
inputs: Vec::new(),
34-
},
35-
ServerResult::ForProve(resp) => resp,
36-
_ => unreachable!(),
37-
}
38-
}
3916
}
4017

4118
impl ServerResult {
@@ -67,19 +44,26 @@ impl ServerResult {
6744
inner.error_msg = String::new();
6845
Self::ForProve(inner)
6946
}
70-
Self::Error(_) => unreachable!(),
7147
}
7248
}
7349

74-
pub fn any_error<T, E>(err_ret: Result<T, E>) -> Self
50+
pub fn any_error<T, E>(self, err_ret: Result<T, E>) -> Self
7551
where
7652
T: std::fmt::Debug,
7753
E: std::fmt::Display,
7854
{
79-
Self::Error(ErrDetail {
80-
is_valid: false,
81-
error_msg: format!("{}", err_ret.unwrap_err()),
82-
})
55+
match self {
56+
ServerResult::ForValidate(mut inner) => {
57+
inner.is_valid = false;
58+
inner.error_msg = format!("{}", err_ret.unwrap_err());
59+
Self::ForValidate(inner)
60+
}
61+
ServerResult::ForProve(mut inner) => {
62+
inner.is_valid = false;
63+
inner.error_msg = format!("{}", err_ret.unwrap_err());
64+
Self::ForProve(inner)
65+
}
66+
}
8367
}
8468
}
8569

0 commit comments

Comments
 (0)