Skip to content

Commit ba7f40e

Browse files
committed
update: refactor process_events
1 parent c2047f0 commit ba7f40e

File tree

3 files changed

+32
-16
lines changed

3 files changed

+32
-16
lines changed

protocol-units/bridge/chains/movement/src/event_monitoring.rs

+26-15
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
use std::{pin::Pin, task::Poll};
22

33
use crate::MovementClient;
4-
use crate::{event_types::MovementChainEvent, types::MovementHash, utils::MovementAddress};
4+
use crate::{
5+
event_types::{CounterpartyEventKind, MovementChainEvent},
6+
types::MovementHash,
7+
utils::MovementAddress,
8+
};
59
use anyhow::Result;
610
use aptos_sdk::rest_client::Response;
7-
use aptos_types::contract_event::{ContractEvent, ContractEventV1, EventWithVersion};
11+
use aptos_types::contract_event::EventWithVersion;
812
use async_stream::try_stream;
913
use bridge_shared::bridge_monitoring::{
1014
BridgeContractCounterpartyEvent, BridgeContractCounterpartyMonitoring,
1115
};
12-
use bridge_shared::types::CounterpartyCompletedDetails;
16+
use bridge_shared::types::{CounterpartyCompletedDetails, LockDetails};
1317
use futures::{FutureExt, Stream, StreamExt};
1418
use tokio::sync::mpsc::UnboundedReceiver;
1519

@@ -51,20 +55,16 @@ impl Stream for MovementCounterpartyMonitoring<MovementAddress, MovementHash> {
5155
"0x{}::atomic_bridge_counterpary::BridgeCounterpartyEvents",
5256
client.counterparty_address.to_hex_literal()
5357
);
54-
let response = rest_client
58+
let locked_response = rest_client
5559
.get_account_events_bcs(
5660
client.counterparty_address,
5761
struct_tag.as_str(),
5862
"bridge_transfer_assets_locked",
5963
Some(1),
6064
None
6165
).await?;
62-
let events = process_response(response);
63-
let bridge_transfer_details = bcs::from_bytes::<CounterpartyCompletedDetails<MovementAddress, MovementHash>>(
64-
&response.event_data
65-
);
66+
let events = process_response(locked_response)?;
6667

67-
// Yield the event
6868
yield Ok(events);
6969
}
7070
};
@@ -76,14 +76,25 @@ impl Stream for MovementCounterpartyMonitoring<MovementAddress, MovementHash> {
7676

7777
fn process_response(
7878
res: Response<Vec<EventWithVersion>>,
79-
) -> Result<Vec<CounterpartyCompletedDetails<MovementAddress, MovementHash>>, bcs::Error> {
79+
kind: CounterpartyEventKind,
80+
) -> Result<Vec<BridgeContractCounterpartyEvent<MovementAddress, MovementHash>>, bcs::Error> {
8081
res.into_inner()
8182
.into_iter()
8283
.map(|e| {
83-
let event_data = e.event.event_data(); // Use the method from the trait
84-
bcs::from_bytes::<CounterpartyCompletedDetails<MovementAddress, MovementHash>>(
85-
event_data,
86-
)
84+
let data = e.event.event_data(); // Use the method from the trait
85+
match kind {
86+
CounterpartyEventKind::Locked => {
87+
let locked_details =
88+
bcs::from_bytes::<LockDetails<MovementAddress, [u8; 32]>>(data)?;
89+
Ok(BridgeContractCounterpartyEvent::Locked(locked_details))
90+
}
91+
CounterpartyEventKind::Completed => {
92+
let completed_details = bcs::from_bytes::<
93+
CounterpartyCompletedDetails<MovementAddress, [u8; 32]>,
94+
>(data)?;
95+
Ok(BridgeContractCounterpartyEvent::Completed(completed_details))
96+
}
97+
}
8798
})
88-
.collect() // Collect the results, handling potential errors
99+
.collect()
89100
}

protocol-units/bridge/chains/movement/src/event_types.rs

+5
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,8 @@ pub enum MovementChainEvent<A, H> {
66
CounterpartyContractEvent(SCCResult<A, H>),
77
Noop,
88
}
9+
10+
pub enum CounterpartyEventKind {
11+
Locked,
12+
Completed,
13+
}

protocol-units/bridge/shared/src/types.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ impl<A, H> Default for BridgeTransferDetails<A, H> {
165165
}
166166
}
167167

168-
#[derive(Debug, PartialEq, Eq, Clone)]
168+
#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)]
169169
pub struct LockDetails<A, H> {
170170
pub bridge_transfer_id: BridgeTransferId<H>,
171171
pub initiator_address: InitiatorAddress<Vec<u8>>,

0 commit comments

Comments
 (0)