Skip to content

Commit

Permalink
Hook up last_block to reader
Browse files Browse the repository at this point in the history
  • Loading branch information
ryardley committed Nov 4, 2024
1 parent 86d7502 commit 9f3eeb3
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 25 deletions.
14 changes: 7 additions & 7 deletions packages/ciphernode/evm/src/ciphernode_registry_sol.rs
Original file line number Diff line number Diff line change
Expand Up @@ -126,14 +126,12 @@ impl CiphernodeRegistrySolReader {
}
}

pub async fn load(params: CiphernodeRegistryReaderParams) -> Result<Addr<Self>> {
let addr = if let Some(snapshot) = params.repository.read().await? {
pub async fn load(params: CiphernodeRegistryReaderParams) -> Result<Self> {
Ok(if let Some(snapshot) = params.repository.read().await? {
Self::from_snapshot(params, snapshot).await?
} else {
Self::new(params)
}
.start();
Ok(addr)
})
}

pub async fn attach(
Expand All @@ -147,14 +145,16 @@ impl CiphernodeRegistrySolReader {
repository: repository.clone(),
};

let addr = Self::load(params).await?;
let actor = Self::load(params).await?;
let last_block = actor.state.last_block;
let addr = actor.start();

EvmEventReader::attach(
&addr.clone().into(),
provider,
extractor,
contract_address,
None,
last_block,
&bus.clone().into(),
)
.await?;
Expand Down
23 changes: 12 additions & 11 deletions packages/ciphernode/evm/src/enclave_sol_reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,14 +119,12 @@ impl EnclaveSolReader {
}
}

pub async fn load(params: EnclaveSolReaderParams) -> Result<Addr<Self>> {
let addr = if let Some(snapshot) = params.repository.read().await? {
pub async fn load(params: EnclaveSolReaderParams) -> Result<Self> {
Ok(if let Some(snapshot) = params.repository.read().await? {
Self::from_snapshot(params, snapshot).await?
} else {
Self::new(params)
}
.start();
Ok(addr)
})
}

pub async fn attach(
Expand All @@ -135,19 +133,22 @@ impl EnclaveSolReader {
contract_address: &str,
repository: &Repository<EnclaveSolReaderState>,
) -> Result<Addr<Self>> {
let addr = Self::load(EnclaveSolReaderParams {
let params = EnclaveSolReaderParams {
bus: bus.clone(),
repository: repository.clone(),
})
.await?;
};

let actor = Self::load(params).await?;
let last_block = actor.state.last_block;
let addr = actor.start();

EvmEventReader::attach(
&addr.clone().into(),
&addr.clone().recipient(),
provider,
extractor,
contract_address,
None,
&bus.clone().into(),
last_block,
&bus.clone(),
)
.await?;

Expand Down
2 changes: 1 addition & 1 deletion packages/ciphernode/evm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ pub use ciphernode_registry_sol::{
pub use enclave_sol::EnclaveSol;
pub use enclave_sol_reader::{EnclaveSolReader, EnclaveSolReaderParams, EnclaveSolReaderState};
pub use enclave_sol_writer::EnclaveSolWriter;
pub use event_reader::{EvmEventReader, ExtractorFn};
pub use event_reader::{EnclaveEvmEvent, EvmEventReader, ExtractorFn};
pub use registry_filter_sol::{RegistryFilterSol, RegistryFilterSolWriter};
29 changes: 23 additions & 6 deletions packages/ciphernode/evm/tests/evm_reader.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use actix::Actor;
use actix::{Actor, Addr, Handler};
use alloy::{
node_bindings::Anvil,
primitives::{FixedBytes, LogData},
Expand All @@ -8,7 +8,7 @@ use alloy::{
};
use anyhow::Result;
use enclave_core::{EnclaveEvent, EventBus, GetHistory, TestEvent};
use evm::{helpers::WithChainId, EvmEventReader};
use evm::{helpers::WithChainId, EnclaveEvmEvent, EvmEventReader};
use std::time::Duration;
use tokio::time::sleep;

Expand Down Expand Up @@ -37,6 +37,21 @@ fn test_event_extractor(
}
}

struct EvmEventUnwrapper {
bus: Addr<EventBus>,
}

impl Actor for EvmEventUnwrapper {
type Context = actix::Context<Self>;
}

impl Handler<EnclaveEvmEvent> for EvmEventUnwrapper {
type Result = ();
fn handle(&mut self, msg: EnclaveEvmEvent, _: &mut Self::Context) -> Self::Result {
self.bus.do_send(msg.event);
}
}

#[actix::test]
async fn evm_reader() -> Result<()> {
// Create a WS provider
Expand All @@ -47,13 +62,14 @@ async fn evm_reader() -> Result<()> {
let arc_provider = WithChainId::new(provider).await?;
let contract = EmitLogs::deploy(arc_provider.get_provider()).await?;
let bus = EventBus::new(true).start();

let unwrapper = EvmEventUnwrapper { bus: bus.clone() }.start();
EvmEventReader::attach(
&bus.clone().into(),
&unwrapper.clone().into(),
&arc_provider,
test_event_extractor,
&contract.address().to_string(),
None,
&bus,
)
.await?;

Expand Down Expand Up @@ -100,7 +116,7 @@ async fn ensure_historical_events() -> Result<()> {
let arc_provider = WithChainId::new(provider).await?;
let contract = EmitLogs::deploy(arc_provider.get_provider()).await?;
let bus = EventBus::new(true).start();

let unwrapper = EvmEventUnwrapper { bus: bus.clone() }.start();
let historical_msgs = vec!["these", "are", "historical", "events"];
let live_events = vec!["these", "events", "are", "live"];

Expand All @@ -114,11 +130,12 @@ async fn ensure_historical_events() -> Result<()> {
}

EvmEventReader::attach(
&bus.clone().into(),
&unwrapper.clone().into(),
&arc_provider,
test_event_extractor,
&contract.address().to_string(),
None,
&bus,
)
.await?;

Expand Down

0 comments on commit 9f3eeb3

Please sign in to comment.