#![allow(missing_docs)]
use structopt::clap::arg_enum;
arg_enum! {
#[allow(missing_docs)]
#[derive(Debug, Clone, Copy)]
pub enum WasmExecutionMethod {
Interpreted,
Compiled,
}
}
impl WasmExecutionMethod {
pub fn enabled_variants() -> Vec<&'static str> {
Self::variants()
.iter()
.cloned()
.filter(|&name| cfg!(feature = "wasmtime") || name != "Compiled")
.collect()
}
}
impl Into<tc_service::config::WasmExecutionMethod> for WasmExecutionMethod {
fn into(self) -> tc_service::config::WasmExecutionMethod {
match self {
WasmExecutionMethod::Interpreted => {
tc_service::config::WasmExecutionMethod::Interpreted
}
#[cfg(feature = "wasmtime")]
WasmExecutionMethod::Compiled => tc_service::config::WasmExecutionMethod::Compiled,
#[cfg(not(feature = "wasmtime"))]
WasmExecutionMethod::Compiled => panic!(
"Tetcore must be compiled with \"wasmtime\" feature for compiled Wasm execution"
),
}
}
}
arg_enum! {
#[allow(missing_docs)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum TracingReceiver {
Log,
Telemetry,
}
}
impl Into<tc_tracing::TracingReceiver> for TracingReceiver {
fn into(self) -> tc_tracing::TracingReceiver {
match self {
TracingReceiver::Log => tc_tracing::TracingReceiver::Log,
TracingReceiver::Telemetry => tc_tracing::TracingReceiver::Telemetry,
}
}
}
arg_enum! {
#[allow(missing_docs)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum NodeKeyType {
Ed25519
}
}
arg_enum! {
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum CryptoScheme {
Ed25519,
Sr25519,
Ecdsa,
}
}
arg_enum! {
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum OutputType {
Json,
Text,
}
}
arg_enum! {
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ExecutionStrategy {
Native,
Wasm,
Both,
NativeElseWasm,
}
}
impl Into<tc_client_api::ExecutionStrategy> for ExecutionStrategy {
fn into(self) -> tc_client_api::ExecutionStrategy {
match self {
ExecutionStrategy::Native => tc_client_api::ExecutionStrategy::NativeWhenPossible,
ExecutionStrategy::Wasm => tc_client_api::ExecutionStrategy::AlwaysWasm,
ExecutionStrategy::Both => tc_client_api::ExecutionStrategy::Both,
ExecutionStrategy::NativeElseWasm => tc_client_api::ExecutionStrategy::NativeElseWasm,
}
}
}
impl ExecutionStrategy {
pub fn as_str(&self) -> &'static str {
match self {
Self::Native => "Native",
Self::Wasm => "Wasm",
Self::Both => "Both",
Self::NativeElseWasm => "NativeElseWasm",
}
}
}
arg_enum! {
#[allow(missing_docs)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub enum RpcMethods {
Auto,
Safe,
Unsafe,
}
}
impl Into<tc_service::config::RpcMethods> for RpcMethods {
fn into(self) -> tc_service::config::RpcMethods {
match self {
RpcMethods::Auto => tc_service::config::RpcMethods::Auto,
RpcMethods::Safe => tc_service::config::RpcMethods::Safe,
RpcMethods::Unsafe => tc_service::config::RpcMethods::Unsafe,
}
}
}
arg_enum! {
#[allow(missing_docs)]
#[derive(Debug, Clone, Copy)]
pub enum Database {
RocksDb,
TetsyDb,
}
}
arg_enum! {
#[allow(missing_docs)]
#[derive(Debug, Clone)]
pub enum OffchainWorkerEnabled {
Always,
Never,
WhenValidating,
}
}
pub const DEFAULT_EXECUTION_SYNCING: ExecutionStrategy = ExecutionStrategy::NativeElseWasm;
pub const DEFAULT_EXECUTION_IMPORT_BLOCK: ExecutionStrategy = ExecutionStrategy::NativeElseWasm;
pub const DEFAULT_EXECUTION_IMPORT_BLOCK_VALIDATOR: ExecutionStrategy = ExecutionStrategy::Wasm;
pub const DEFAULT_EXECUTION_BLOCK_CONSTRUCTION: ExecutionStrategy = ExecutionStrategy::Wasm;
pub const DEFAULT_EXECUTION_OFFCHAIN_WORKER: ExecutionStrategy = ExecutionStrategy::Native;
pub const DEFAULT_EXECUTION_OTHER: ExecutionStrategy = ExecutionStrategy::Native;