revm_inspector/
inspect.rs1use context::result::ExecResultAndState;
2use handler::{ExecuteCommitEvm, ExecuteEvm};
3
4pub trait InspectEvm: ExecuteEvm {
9 type Inspector;
11
12 fn set_inspector(&mut self, inspector: Self::Inspector);
18
19 fn inspect_one_tx(&mut self, tx: Self::Tx) -> Result<Self::ExecutionResult, Self::Error>;
21
22 fn inspect_tx(
24 &mut self,
25 tx: Self::Tx,
26 ) -> Result<ExecResultAndState<Self::ExecutionResult, Self::State>, Self::Error> {
27 let output = self.inspect_one_tx(tx)?;
28 let state = self.finalize();
29 Ok(ExecResultAndState::new(output, state))
30 }
31
32 fn inspect(
34 &mut self,
35 tx: Self::Tx,
36 inspector: Self::Inspector,
37 ) -> Result<ExecResultAndState<Self::ExecutionResult, Self::State>, Self::Error> {
38 let output = self.inspect_one(tx, inspector)?;
39 let state = self.finalize();
40 Ok(ExecResultAndState::new(output, state))
41 }
42
43 fn inspect_one(
45 &mut self,
46 tx: Self::Tx,
47 inspector: Self::Inspector,
48 ) -> Result<Self::ExecutionResult, Self::Error> {
49 self.set_inspector(inspector);
50 self.inspect_one_tx(tx)
51 }
52}
53
54pub trait InspectCommitEvm: InspectEvm + ExecuteCommitEvm {
59 fn inspect_tx_commit(&mut self, tx: Self::Tx) -> Result<Self::ExecutionResult, Self::Error> {
62 let output = self.inspect_one_tx(tx)?;
63 self.commit_inner();
64 Ok(output)
65 }
66
67 fn inspect_commit(
70 &mut self,
71 tx: Self::Tx,
72 inspector: Self::Inspector,
73 ) -> Result<Self::ExecutionResult, Self::Error> {
74 let output = self.inspect_one(tx, inspector)?;
75 self.commit_inner();
76 Ok(output)
77 }
78}