Skip to content

Commit df072ba

Browse files
committed
cleaned up ordered hash map
Signed-off-by: wadeking98 <[email protected]>
1 parent 9c3877a commit df072ba

File tree

4 files changed

+25
-21
lines changed

4 files changed

+25
-21
lines changed

libindy_vdr/src/pool/cache/storage.rs

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,10 @@ impl<O: Ord + Copy + Send + Sync, V: Clone + Send + Sync> OrderedStore<O, V> for
102102
/// A hashmap that also maintains a BTreeMap of keys ordered by a given value
103103
/// This is useful for structures that need fast O(1) lookups, but also need to evict the oldest or least recently used entries
104104
/// The Ordered Store must contain both the keys and values for persistence
105-
pub struct OrderedHashMap<K, O, V>(
106-
(
107-
HashMap<K, (O, V)>,
108-
Box<dyn OrderedStore<O, Vec<(K, V)>> + Send + Sync>,
109-
),
110-
);
105+
pub struct OrderedHashMap<K, O, V> {
106+
lookup: HashMap<K, (O, V)>,
107+
ordered_lookup: Box<dyn OrderedStore<O, Vec<(K, V)>> + Send + Sync>,
108+
}
111109

112110
impl<K: Eq + Hash + Clone + Send + Sync, O: Ord + Clone + Send + Sync, V: Clone>
113111
OrderedHashMap<K, O, V>
@@ -121,17 +119,20 @@ impl<K: Eq + Hash + Clone + Send + Sync, O: Ord + Clone + Send + Sync, V: Clone>
121119
keyed_data.insert(k.clone(), (order.clone(), v.clone()));
122120
})
123121
});
124-
Self((keyed_data, ordered_data))
122+
Self {
123+
lookup: keyed_data,
124+
ordered_lookup: ordered_data,
125+
}
125126
}
126127
}
127128

128129
impl<K: Hash + Eq + Clone, O: Ord + Clone, V: Clone> OrderedHashMap<K, O, V> {
129130
pub fn len(&self) -> usize {
130-
let (lookup, _) = &self.0;
131+
let lookup = &self.lookup;
131132
lookup.len()
132133
}
133134
pub fn get(&self, key: &K) -> Option<&(O, V)> {
134-
let (lookup, _) = &self.0;
135+
let lookup = &self.lookup;
135136
lookup.get(key)
136137
}
137138
fn get_key_value(
@@ -140,7 +141,8 @@ impl<K: Hash + Eq + Clone, O: Ord + Clone, V: Clone> OrderedHashMap<K, O, V> {
140141
&Box<dyn OrderedStore<O, Vec<(K, V)>> + Send + Sync>,
141142
) -> Option<(O, Vec<K>)>,
142143
) -> Option<(K, O, V)> {
143-
let (lookup, ordered_lookup) = &self.0;
144+
let lookup = &self.lookup;
145+
let ordered_lookup = &self.ordered_lookup;
144146
selector(ordered_lookup).and_then(|(_, keys)| {
145147
keys.first().and_then(|key| {
146148
lookup
@@ -173,40 +175,42 @@ impl<K: Hash + Eq + Clone, O: Ord + Clone, V: Clone> OrderedHashMap<K, O, V> {
173175
}
174176
/// inserts a new entry with the given key and value and order
175177
pub fn insert(&mut self, key: K, value: V, order: O) -> Option<V> {
176-
let (lookup, order_lookup) = &mut self.0;
178+
let lookup = &mut self.lookup;
179+
let ordered_lookup = &mut self.ordered_lookup;
177180

178181
if let Some((old_order, _)) = lookup.get(&key) {
179182
// if entry already exists, remove it from the btree
180-
if let Some(mut keys) = order_lookup.remove(old_order) {
183+
if let Some(mut keys) = ordered_lookup.remove(old_order) {
181184
keys.retain(|k| k.0 != key);
182185
// insert modified keys back into btree
183186
if !keys.is_empty() {
184-
order_lookup.insert(old_order.clone(), keys);
187+
ordered_lookup.insert(old_order.clone(), keys);
185188
}
186189
}
187190
}
188-
let keys = match order_lookup.remove(&order) {
191+
let keys = match ordered_lookup.remove(&order) {
189192
Some(mut ks) => {
190193
ks.push((key.clone(), value.clone()));
191194
ks
192195
}
193196
None => vec![(key.clone(), value.clone())],
194197
};
195-
order_lookup.insert(order.clone(), keys);
198+
ordered_lookup.insert(order.clone(), keys);
196199
lookup
197200
.insert(key, (order, value))
198201
.and_then(|(_, v)| Some(v))
199202
}
200203
/// removes the entry with the given key
201204
pub fn remove(&mut self, key: &K) -> Option<(O, V)> {
202-
let (lookup, order_lookup) = &mut self.0;
205+
let lookup = &mut self.lookup;
206+
let ordered_lookup = &mut self.ordered_lookup;
203207
lookup.remove(key).and_then(|(order, v)| {
204-
match order_lookup.remove(&order) {
208+
match ordered_lookup.remove(&order) {
205209
Some(mut keys) => {
206210
keys.retain(|k| k.0 != *key);
207211
// insert remaining keys back in
208212
if !keys.is_empty() {
209-
order_lookup.insert(order.clone(), keys);
213+
ordered_lookup.insert(order.clone(), keys);
210214
}
211215
}
212216
None => {}

wrappers/javascript/indy-vdr-react-native/src/NativeBindings.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export interface NativeBindings {
1313

1414
setCacheDirectory(options: { path: string }): ReturnObject<never>
1515

16-
setLedgerTxnCache(options: { capacity: number; expiry_offset_ms: number, path: string }): ReturnObject<never>
16+
setLedgerTxnCache(options: { capacity: number; expiry_offset_ms: number; path: string }): ReturnObject<never>
1717

1818
setDefaultLogger(options: Record<string, never>): ReturnObject<never>
1919

wrappers/javascript/indy-vdr-react-native/src/ReactNativeIndyVdr.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ export class ReactNativeIndyVdr implements IndyVdr {
110110
const serializedOptions = serializeArguments(options)
111111
this.indyVdr.setCacheDirectory(serializedOptions)
112112
}
113-
public setLedgerTxnCache(options: { capacity: number; expiry_offset_ms: number, path: string }): void {
113+
public setLedgerTxnCache(options: { capacity: number; expiry_offset_ms: number; path: string }): void {
114114
const serializedOptions = serializeArguments(options)
115115
this.indyVdr.setLedgerTxnCache(serializedOptions)
116116
}

wrappers/javascript/indy-vdr-shared/src/types/IndyVdr.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export interface IndyVdr {
4949

5050
setCacheDirectory(options: { path: string }): void
5151

52-
setLedgerTxnCache(options: { capacity: number; expiry_offset_ms: number, path: string }): void
52+
setLedgerTxnCache(options: { capacity: number; expiry_offset_ms: number; path: string }): void
5353

5454
setDefaultLogger(): void
5555

0 commit comments

Comments
 (0)