@@ -15,7 +15,7 @@ use futures::{
1515 channel:: { mpsc, oneshot} ,
1616 StreamExt ,
1717} ;
18- use std:: collections:: { HashMap , VecDeque } ;
18+ use std:: collections:: { BTreeMap , VecDeque } ;
1919use tracing:: { debug, error, trace, warn} ;
2020
2121/// A responder waiting for a message.
@@ -76,7 +76,7 @@ pub struct Engine<E: Clock + Spawner + Metrics, P: PublicKey, M: Committable + D
7676
7777 /// Pending requests from the application.
7878 #[ allow( clippy:: type_complexity) ]
79- waiters : HashMap < M :: Commitment , Vec < Waiter < P , M :: Digest , M > > > ,
79+ waiters : BTreeMap < M :: Commitment , Vec < Waiter < P , M :: Digest , M > > > ,
8080
8181 ////////////////////////////////////////
8282 // Cache
@@ -85,21 +85,21 @@ pub struct Engine<E: Clock + Spawner + Metrics, P: PublicKey, M: Committable + D
8585 ///
8686 /// We store messages outside of the deques to minimize memory usage
8787 /// when receiving duplicate messages.
88- items : HashMap < M :: Commitment , HashMap < M :: Digest , M > > ,
88+ items : BTreeMap < M :: Commitment , BTreeMap < M :: Digest , M > > ,
8989
9090 /// A LRU cache of the latest received identities and digests from each peer.
9191 ///
9292 /// This is used to limit the number of digests stored per peer.
9393 /// At most `deque_size` digests are stored per peer. This value is expected to be small, so
9494 /// membership checks are done in linear time.
9595 #[ allow( clippy:: type_complexity) ]
96- deques : HashMap < P , VecDeque < Pair < M :: Commitment , M :: Digest > > > ,
96+ deques : BTreeMap < P , VecDeque < Pair < M :: Commitment , M :: Digest > > > ,
9797
9898 /// The number of times each digest (globally unique) exists in one of the deques.
9999 ///
100100 /// Multiple peers can send the same message and we only want to store
101101 /// the message once.
102- counts : HashMap < M :: Digest , usize > ,
102+ counts : BTreeMap < M :: Digest , usize > ,
103103
104104 ////////////////////////////////////////
105105 // Metrics
@@ -125,10 +125,10 @@ impl<E: Clock + Spawner + Metrics, P: PublicKey, M: Committable + Digestible + C
125125 deque_size : cfg. deque_size ,
126126 codec_config : cfg. codec_config ,
127127 mailbox_receiver,
128- waiters : HashMap :: new ( ) ,
129- deques : HashMap :: new ( ) ,
130- items : HashMap :: new ( ) ,
131- counts : HashMap :: new ( ) ,
128+ waiters : BTreeMap :: new ( ) ,
129+ deques : BTreeMap :: new ( ) ,
130+ items : BTreeMap :: new ( ) ,
131+ counts : BTreeMap :: new ( ) ,
132132 metrics,
133133 } ;
134134
0 commit comments