use structopt::StructOpt;
use tc_service::config::OffchainWorkerConfig;
use tc_network::config::Role;
use crate::error;
use crate::OffchainWorkerEnabled;
#[derive(Debug, StructOpt)]
pub struct OffchainWorkerParams {
#[structopt(
long = "offchain-worker",
value_name = "ENABLED",
possible_values = &OffchainWorkerEnabled::variants(),
case_insensitive = true,
default_value = "WhenValidating"
)]
pub enabled: OffchainWorkerEnabled,
#[structopt(
long = "enable-offchain-indexing",
value_name = "ENABLE_OFFCHAIN_INDEXING"
)]
pub indexing_enabled: bool,
}
impl OffchainWorkerParams {
pub fn offchain_worker(
&self,
role: &Role,
) -> error::Result<OffchainWorkerConfig>
{
let enabled = match (&self.enabled, role) {
(OffchainWorkerEnabled::WhenValidating, Role::Authority { .. }) => true,
(OffchainWorkerEnabled::Always, _) => true,
(OffchainWorkerEnabled::Never, _) => false,
(OffchainWorkerEnabled::WhenValidating, _) => false,
};
let indexing_enabled = enabled && self.indexing_enabled;
Ok(OffchainWorkerConfig { enabled, indexing_enabled })
}
}