github.com/muhammedhassanm/blockchain@v0.0.0-20200120143007-697261defd4d/sawtooth-core-master/families/smallbank/smallbank_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 extern crate crypto; 21 #[macro_use] 22 extern crate log; 23 extern crate log4rs; 24 extern crate protobuf; 25 extern crate rustc_serialize; 26 extern crate sawtooth_sdk; 27 28 mod handler; 29 mod smallbank; 30 31 use log::LogLevelFilter; 32 use log4rs::append::console::ConsoleAppender; 33 use log4rs::config::{Appender, Config, Root}; 34 use log4rs::encode::pattern::PatternEncoder; 35 use std::process; 36 37 use sawtooth_sdk::processor::TransactionProcessor; 38 39 use handler::SmallbankTransactionHandler; 40 41 fn main() { 42 let matches = clap_app!(smallbank => 43 (version: crate_version!()) 44 (about: "Smallbank Transaction Processor (Rust)") 45 (@arg connect: -C --connect +takes_value 46 "connection endpoint for validator") 47 (@arg verbose: -v --verbose +multiple 48 "increase output verbosity")) 49 .get_matches(); 50 51 let endpoint = matches 52 .value_of("connect") 53 .unwrap_or("tcp://localhost:4004"); 54 55 let console_log_level; 56 match matches.occurrences_of("verbose") { 57 0 => console_log_level = LogLevelFilter::Warn, 58 1 => console_log_level = LogLevelFilter::Info, 59 2 => console_log_level = LogLevelFilter::Debug, 60 3 | _ => console_log_level = LogLevelFilter::Trace, 61 } 62 63 let stdout = ConsoleAppender::builder() 64 .encoder(Box::new(PatternEncoder::new( 65 "{h({l:5.5})} | {({M}:{L}):20.20} | {m}{n}", 66 ))) 67 .build(); 68 69 let config = match Config::builder() 70 .appender(Appender::builder().build("stdout", Box::new(stdout))) 71 .build(Root::builder().appender("stdout").build(console_log_level)) 72 { 73 Ok(x) => x, 74 Err(_) => process::exit(1), 75 }; 76 77 match log4rs::init_config(config) { 78 Ok(_) => (), 79 Err(_) => process::exit(1), 80 } 81 82 let handler = SmallbankTransactionHandler::new(); 83 let mut processor = TransactionProcessor::new(endpoint); 84 85 info!("Console logging level: {}", console_log_level); 86 87 processor.add_handler(&handler); 88 processor.start(); 89 }