github.com/muhammedhassanm/blockchain@v0.0.0-20200120143007-697261defd4d/sawtooth-core-master/sdk/examples/devmode_rust/src/main.rs (about) 1 /* 2 * Copyright 2018 Intel Corporation 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 * ------------------------------------------------------------------------------ 16 */ 17 18 #[macro_use] 19 extern crate clap; 20 #[macro_use] 21 extern crate log; 22 extern crate log4rs; 23 extern crate rand; 24 extern crate sawtooth_sdk; 25 26 mod engine; 27 28 use std::process; 29 30 use log::LogLevelFilter; 31 use log4rs::append::console::ConsoleAppender; 32 use log4rs::config::{Appender, Config, Root}; 33 use log4rs::encode::pattern::PatternEncoder; 34 35 use engine::DevmodeEngine; 36 use sawtooth_sdk::consensus::zmq_driver::ZmqDriver; 37 38 fn main() { 39 let matches = clap_app!(intkey => 40 (version: crate_version!()) 41 (about: "Devmode Consensus Engine (Rust)") 42 (@arg connect: -C --connect +takes_value 43 "connection endpoint for validator") 44 (@arg verbose: -v --verbose +multiple 45 "increase output verbosity")) 46 .get_matches(); 47 48 let endpoint = matches 49 .value_of("connect") 50 .unwrap_or("tcp://localhost:5005"); 51 52 let console_log_level; 53 match matches.occurrences_of("verbose") { 54 0 => console_log_level = LogLevelFilter::Warn, 55 1 => console_log_level = LogLevelFilter::Info, 56 2 => console_log_level = LogLevelFilter::Debug, 57 3 | _ => console_log_level = LogLevelFilter::Trace, 58 } 59 60 let stdout = ConsoleAppender::builder() 61 .encoder(Box::new(PatternEncoder::new( 62 "{h({l:5.5})} | {({M}:{L}):20.20} | {m}{n}", 63 ))) 64 .build(); 65 66 let config = Config::builder() 67 .appender(Appender::builder().build("stdout", Box::new(stdout))) 68 .build(Root::builder().appender("stdout").build(console_log_level)) 69 .unwrap_or_else(|err| { 70 error!("{}", err); 71 process::exit(1); 72 }); 73 74 log4rs::init_config(config).unwrap_or_else(|err| { 75 error!("{}", err); 76 process::exit(1); 77 }); 78 79 let (driver, _stop) = ZmqDriver::new(); 80 driver.start(endpoint, DevmodeEngine::new()).unwrap_or_else(|err| { 81 error!("{}", err); 82 process::exit(1); 83 }); 84 }