-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Expand file tree
/
Copy pathmod.rs
More file actions
45 lines (39 loc) · 1.55 KB
/
mod.rs
File metadata and controls
45 lines (39 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Copyright (c) Aptos Foundation
// Licensed pursuant to the Innovation-Enabling Source Code License, available at https://github.com/aptos-labs/aptos-core/blob/main/LICENSE
#![forbid(unsafe_code)]
use crate::types::partial_state_compute_result::PartialStateComputeResult;
use anyhow::Result;
use aptos_executor_types::execution_output::ExecutionOutput;
use aptos_storage_interface::{
state_store::state_summary::ProvableStateSummary, DbReader, LedgerSummary,
};
use do_ledger_update::DoLedgerUpdate;
use do_state_checkpoint::DoStateCheckpoint;
pub mod do_get_execution_output;
pub mod do_ledger_update;
pub mod do_state_checkpoint;
pub struct ApplyExecutionOutput;
impl ApplyExecutionOutput {
pub fn run(
execution_output: ExecutionOutput,
base_view: LedgerSummary,
reader: &(dyn DbReader + Sync),
) -> Result<PartialStateComputeResult> {
let state_checkpoint_output = DoStateCheckpoint::run(
&execution_output,
&base_view.state_summary,
&ProvableStateSummary::new_persisted(reader, true)?,
&ProvableStateSummary::new_persisted(reader, false)?,
None,
)?;
let ledger_update_output = DoLedgerUpdate::run(
&execution_output,
&state_checkpoint_output,
base_view.transaction_accumulator,
)?;
let output = PartialStateComputeResult::new(execution_output);
output.set_state_checkpoint_output(state_checkpoint_output);
output.set_ledger_update_output(ledger_update_output);
Ok(output)
}
}