@@ -34,14 +34,25 @@ use codechain_miner::run;
34
34
35
35
use self :: config:: CuckooConfig ;
36
36
37
+ macro_rules! hex_value_t {
38
+ ( $m: ident, $v: expr) => { {
39
+ let val = value_t!( $m, $v, String ) . map_err( |_| format!( "Invalid value" ) ) ?;
40
+ if val. len( ) > 2 && & val[ 0 ..2 ] == "0x" {
41
+ usize :: from_str_radix( & val[ 2 ..] , 16 ) . map_err( |_| format!( "'{}' isn't parsed" , val) )
42
+ } else {
43
+ Err ( format!( "'{}' isn't a hexadecimal number" , val) )
44
+ }
45
+ } } ;
46
+ }
47
+
37
48
fn get_options ( ) -> Result < CuckooConfig , String > {
38
49
let yaml = load_yaml ! ( "./cli.yml" ) ;
39
50
let matches = clap:: App :: from_yaml ( yaml) . get_matches ( ) ;
40
51
41
52
let listening_port = value_t ! ( matches, "listening port" , u16 ) . map_err ( |_| "Invalid listening port" ) ?;
42
53
let submitting_port = value_t ! ( matches, "submitting port" , u16 ) . map_err ( |_| "Invalid submitting port" ) ?;
43
- let max_vertex = value_t ! ( matches, "max vertex" , usize ) . map_err ( |_| "Invalid max vertex" ) ?;
44
- let max_edge = value_t ! ( matches, "max edge" , usize ) . map_err ( |_| "Invalid max edge" ) ?;
54
+ let max_vertex = hex_value_t ! ( matches, "max vertex" ) . map_err ( |e| format ! ( "Invalid max vertex: {}" , e ) ) ?;
55
+ let max_edge = hex_value_t ! ( matches, "max edge" ) . map_err ( |e| format ! ( "Invalid max edge: {}" , e ) ) ?;
45
56
let cycle_length = value_t ! ( matches, "cycle length" , usize ) . map_err ( |_| "Invalid cycle length" ) ?;
46
57
let concurrent_jobs = value_t ! ( matches, "concurrent jobs" , u16 ) . map_err ( |_| "Invalid concurrent jobs" ) ?;
47
58
0 commit comments