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
use async_trait::async_trait;
use consensus::ConsensusOutput;
use executor::{ExecutionIndices, ExecutionState};
use tokio::sync::mpsc::Sender;
pub struct SimpleExecutionState {
tx_transaction_confirmation: Sender<Vec<u8>>,
}
impl SimpleExecutionState {
pub fn new(tx_transaction_confirmation: Sender<Vec<u8>>) -> Self {
Self {
tx_transaction_confirmation,
}
}
}
#[async_trait]
impl ExecutionState for SimpleExecutionState {
async fn handle_consensus_transaction(
&self,
_consensus_output: &ConsensusOutput,
_execution_indices: ExecutionIndices,
transaction: Vec<u8>,
) {
if let Err(err) = self.tx_transaction_confirmation.send(transaction).await {
eprintln!("Failed to send txn in SimpleExecutionState: {}", err);
}
}
async fn load_execution_indices(&self) -> ExecutionIndices {
ExecutionIndices::default()
}
}