ref(example_cli): Add new struct Init
for holding the items returned from `example_cli::init`
This commit is contained in:
parent
89a7ddca7f
commit
1c15cb2f91
@ -110,9 +110,13 @@ enum RpcCommands {
|
|||||||
|
|
||||||
fn main() -> anyhow::Result<()> {
|
fn main() -> anyhow::Result<()> {
|
||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
|
let example_cli::Init {
|
||||||
let (args, keymap, index, db, init_changeset) =
|
args,
|
||||||
example_cli::init::<RpcCommands, RpcArgs, ChangeSet>(DB_MAGIC, DB_PATH)?;
|
keymap,
|
||||||
|
index,
|
||||||
|
db,
|
||||||
|
init_changeset,
|
||||||
|
} = example_cli::init::<RpcCommands, RpcArgs, ChangeSet>(DB_MAGIC, DB_PATH)?;
|
||||||
println!(
|
println!(
|
||||||
"[{:>10}s] loaded initial changeset from db",
|
"[{:>10}s] loaded initial changeset from db",
|
||||||
start.elapsed().as_secs_f32()
|
start.elapsed().as_secs_f32()
|
||||||
|
@ -656,19 +656,26 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Alias the `Result` of `init`
|
/// The initial state returned by [`init`].
|
||||||
pub type InitialState<CS, S, C> = (
|
pub struct Init<CS: clap::Subcommand, S: clap::Args, C> {
|
||||||
Args<CS, S>,
|
/// Arguments parsed by the cli.
|
||||||
KeyMap,
|
pub args: Args<CS, S>,
|
||||||
KeychainTxOutIndex<Keychain>,
|
/// Descriptor keymap.
|
||||||
Mutex<Database<C>>,
|
pub keymap: KeyMap,
|
||||||
C,
|
/// Keychain-txout index.
|
||||||
);
|
pub index: KeychainTxOutIndex<Keychain>,
|
||||||
|
/// Persistence backend.
|
||||||
|
pub db: Mutex<Database<C>>,
|
||||||
|
/// Initial changeset.
|
||||||
|
pub init_changeset: C,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Parses command line arguments and initializes all components, creating
|
||||||
|
/// a file store with the given parameters, or loading one if it exists.
|
||||||
pub fn init<CS: clap::Subcommand, S: clap::Args, C>(
|
pub fn init<CS: clap::Subcommand, S: clap::Args, C>(
|
||||||
db_magic: &[u8],
|
db_magic: &[u8],
|
||||||
db_default_path: &str,
|
db_default_path: &str,
|
||||||
) -> anyhow::Result<InitialState<CS, S, C>>
|
) -> anyhow::Result<Init<CS, S, C>>
|
||||||
where
|
where
|
||||||
C: Default + Append + Serialize + DeserializeOwned,
|
C: Default + Append + Serialize + DeserializeOwned,
|
||||||
{
|
{
|
||||||
@ -702,11 +709,11 @@ where
|
|||||||
|
|
||||||
let init_changeset = db_backend.load_from_persistence()?.unwrap_or_default();
|
let init_changeset = db_backend.load_from_persistence()?.unwrap_or_default();
|
||||||
|
|
||||||
Ok((
|
Ok(Init {
|
||||||
args,
|
args,
|
||||||
keymap,
|
keymap,
|
||||||
index,
|
index,
|
||||||
Mutex::new(Database::new(db_backend)),
|
db: Mutex::new(Database::new(db_backend)),
|
||||||
init_changeset,
|
init_changeset,
|
||||||
))
|
})
|
||||||
}
|
}
|
||||||
|
@ -103,8 +103,15 @@ type ChangeSet = (
|
|||||||
);
|
);
|
||||||
|
|
||||||
fn main() -> anyhow::Result<()> {
|
fn main() -> anyhow::Result<()> {
|
||||||
let (args, keymap, index, db, (disk_local_chain, disk_tx_graph)) =
|
let example_cli::Init {
|
||||||
example_cli::init::<ElectrumCommands, ElectrumArgs, ChangeSet>(DB_MAGIC, DB_PATH)?;
|
args,
|
||||||
|
keymap,
|
||||||
|
index,
|
||||||
|
db,
|
||||||
|
init_changeset,
|
||||||
|
} = example_cli::init::<ElectrumCommands, ElectrumArgs, ChangeSet>(DB_MAGIC, DB_PATH)?;
|
||||||
|
|
||||||
|
let (disk_local_chain, disk_tx_graph) = init_changeset;
|
||||||
|
|
||||||
let graph = Mutex::new({
|
let graph = Mutex::new({
|
||||||
let mut graph = IndexedTxGraph::new(index);
|
let mut graph = IndexedTxGraph::new(index);
|
||||||
|
@ -99,8 +99,13 @@ pub struct ScanOptions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn main() -> anyhow::Result<()> {
|
fn main() -> anyhow::Result<()> {
|
||||||
let (args, keymap, index, db, init_changeset) =
|
let example_cli::Init {
|
||||||
example_cli::init::<EsploraCommands, EsploraArgs, ChangeSet>(DB_MAGIC, DB_PATH)?;
|
args,
|
||||||
|
keymap,
|
||||||
|
index,
|
||||||
|
db,
|
||||||
|
init_changeset,
|
||||||
|
} = example_cli::init::<EsploraCommands, EsploraArgs, ChangeSet>(DB_MAGIC, DB_PATH)?;
|
||||||
|
|
||||||
let genesis_hash = genesis_block(args.network).block_hash();
|
let genesis_hash = genesis_block(args.network).block_hash();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user