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  }