mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-05-24 08:44:46 -07:00
61 lines
1.4 KiB
Rust
61 lines
1.4 KiB
Rust
use brk_error::Result;
|
|
use brk_indexer::Indexer;
|
|
use vecdb::Exit;
|
|
|
|
use crate::{blocks, indexes, inputs, outputs, ComputeIndexes};
|
|
|
|
use super::Vecs;
|
|
|
|
impl Vecs {
|
|
#[allow(clippy::too_many_arguments)]
|
|
pub(crate) fn compute(
|
|
&mut self,
|
|
indexer: &Indexer,
|
|
indexes: &indexes::Vecs,
|
|
blocks: &blocks::Vecs,
|
|
inputs: &inputs::Vecs,
|
|
outputs: &outputs::Vecs,
|
|
starting_indexes: &ComputeIndexes,
|
|
exit: &Exit,
|
|
) -> Result<()> {
|
|
// Count computes first
|
|
self.count
|
|
.compute(indexer, starting_indexes, exit)?;
|
|
|
|
// Versions depends on count
|
|
self.versions
|
|
.compute(indexer, starting_indexes, exit)?;
|
|
|
|
// Size computes next
|
|
self.size
|
|
.compute(indexer, indexes, starting_indexes, exit)?;
|
|
|
|
// Fees depends on size
|
|
self.fees.compute(
|
|
indexer,
|
|
indexes,
|
|
inputs,
|
|
&self.size,
|
|
starting_indexes,
|
|
exit,
|
|
)?;
|
|
|
|
// Volume depends on fees, counts, and blocks (lookback vecs, interval)
|
|
self.volume.compute(
|
|
indexer,
|
|
indexes,
|
|
blocks,
|
|
&self.count,
|
|
&self.fees,
|
|
&inputs.count,
|
|
&outputs.count,
|
|
starting_indexes,
|
|
exit,
|
|
)?;
|
|
|
|
let _lock = exit.lock();
|
|
self.db.compact()?;
|
|
Ok(())
|
|
}
|
|
}
|