52 lines
1.5 KiB
Rust
52 lines
1.5 KiB
Rust
use crate::network::tendermint;
|
|
use crate::services::mixmining::health_check_runner;
|
|
use crypto::identity::MixIdentityKeyPair;
|
|
use healthcheck::HealthChecker;
|
|
use serde::Deserialize;
|
|
use std::time;
|
|
use tokio::runtime::Runtime;
|
|
|
|
#[derive(Deserialize, Debug)]
|
|
pub struct Config {
|
|
#[serde(rename(deserialize = "healthcheck"))]
|
|
pub health_check: healthcheck::config::HealthCheck,
|
|
}
|
|
|
|
// allow for a generic validator
|
|
pub struct Validator {
|
|
#[allow(dead_code)]
|
|
identity_keypair: MixIdentityKeyPair,
|
|
health_check_runner: health_check_runner::HealthCheckRunner,
|
|
tendermint_abci: tendermint::Abci,
|
|
}
|
|
|
|
// but for time being, since it's a dummy one, have it use dummy keys
|
|
impl Validator {
|
|
pub fn new(config: Config) -> Self {
|
|
let dummy_keypair = MixIdentityKeyPair::new();
|
|
let hc = HealthChecker::new(
|
|
time::Duration::from_secs_f64(config.health_check.resolution_timeout),
|
|
config.health_check.num_test_packets,
|
|
dummy_keypair.clone(),
|
|
);
|
|
|
|
let health_check_runner = health_check_runner::HealthCheckRunner::new(
|
|
config.health_check.directory_server.clone(),
|
|
config.health_check.interval,
|
|
hc,
|
|
);
|
|
|
|
Validator {
|
|
identity_keypair: dummy_keypair,
|
|
health_check_runner,
|
|
tendermint_abci: tendermint::Abci::new(),
|
|
}
|
|
}
|
|
|
|
pub fn start(self) {
|
|
let mut rt = Runtime::new().unwrap();
|
|
rt.spawn(self.health_check_runner.run());
|
|
rt.block_on(self.tendermint_abci.run());
|
|
}
|
|
}
|