Skip to content

Commit 85ae669

Browse files
fix: Generalise FeedMessage to hold a HeaderLike and not a BlockHeader (#624)
2 parents aff6c4a + 58a0128 commit 85ae669

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

tycho-client/src/feed/mod.rs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ pub mod synchronizer;
3535
/// or simplified structures that only provide a timestamp (e.g., for RFQ logic).
3636
pub trait HeaderLike {
3737
fn block(self) -> Option<BlockHeader>;
38-
fn ts(self) -> u64;
38+
fn block_number_or_timestamp(self) -> u64;
3939
}
4040

4141
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize, Eq, Hash)]
@@ -64,8 +64,8 @@ impl HeaderLike for BlockHeader {
6464
Some(self)
6565
}
6666

67-
fn ts(self) -> u64 {
68-
self.timestamp
67+
fn block_number_or_timestamp(self) -> u64 {
68+
self.number
6969
}
7070
}
7171

@@ -375,14 +375,20 @@ impl SynchronizerStream {
375375
}
376376

377377
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
378-
pub struct FeedMessage {
379-
pub state_msgs: HashMap<String, StateSyncMessage<BlockHeader>>,
378+
pub struct FeedMessage<H>
379+
where
380+
H: HeaderLike,
381+
{
382+
pub state_msgs: HashMap<String, StateSyncMessage<H>>,
380383
pub sync_states: HashMap<String, SynchronizerState>,
381384
}
382385

383-
impl FeedMessage {
386+
impl<H> FeedMessage<H>
387+
where
388+
H: HeaderLike,
389+
{
384390
fn new(
385-
state_msgs: HashMap<String, StateSyncMessage<BlockHeader>>,
391+
state_msgs: HashMap<String, StateSyncMessage<H>>,
386392
sync_states: HashMap<String, SynchronizerState>,
387393
) -> Self {
388394
Self { state_msgs, sync_states }
@@ -411,7 +417,9 @@ where
411417
self.synchronizers = Some(registered);
412418
self
413419
}
414-
pub async fn run(mut self) -> BlockSyncResult<(JoinHandle<()>, Receiver<FeedMessage>)> {
420+
pub async fn run(
421+
mut self,
422+
) -> BlockSyncResult<(JoinHandle<()>, Receiver<FeedMessage<BlockHeader>>)> {
415423
trace!("Starting BlockSynchronizer...");
416424
let mut state_sync_tasks = FuturesUnordered::new();
417425
let mut synchronizers = self

tycho-client/src/stream.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use tycho_common::dto::{Chain, ExtractorIdentity, PaginationParams, ProtocolSyst
1212
use crate::{
1313
deltas::DeltasClient,
1414
feed::{
15-
component_tracker::ComponentFilter, synchronizer::ProtocolStateSynchronizer,
15+
component_tracker::ComponentFilter, synchronizer::ProtocolStateSynchronizer, BlockHeader,
1616
BlockSynchronizer, FeedMessage,
1717
},
1818
rpc::RPCClient,
@@ -132,7 +132,9 @@ impl TychoStreamBuilder {
132132

133133
/// Builds and starts the Tycho client, connecting to the Tycho server and
134134
/// setting up the synchronization of exchange components.
135-
pub async fn build(self) -> Result<(JoinHandle<()>, Receiver<FeedMessage>), StreamError> {
135+
pub async fn build(
136+
self,
137+
) -> Result<(JoinHandle<()>, Receiver<FeedMessage<BlockHeader>>), StreamError> {
136138
if self.exchanges.is_empty() {
137139
return Err(StreamError::SetUpError(
138140
"At least one exchange must be registered.".to_string(),

0 commit comments

Comments
 (0)