@@ -31,7 +31,7 @@ class MemoryTxGroupIndex(TxGroupIndex[KT]):
31
31
"""Memory implementation of the TxGroupIndex. This class is abstract and cannot be used directly.
32
32
"""
33
33
34
- index : defaultdict [KT , set [bytes ]]
34
+ index : defaultdict [KT , set [tuple [ int , bytes ] ]]
35
35
36
36
def __init__ (self ) -> None :
37
37
self .force_clear ()
@@ -40,7 +40,7 @@ def force_clear(self) -> None:
40
40
self .index = defaultdict (set )
41
41
42
42
def _add_tx (self , key : KT , tx : BaseTransaction ) -> None :
43
- self .index [key ].add (not_none (tx .hash ))
43
+ self .index [key ].add (( tx . timestamp , not_none (tx .hash ) ))
44
44
45
45
@abstractmethod
46
46
def _extract_keys (self , tx : BaseTransaction ) -> Iterable [KT ]:
@@ -57,13 +57,14 @@ def remove_tx(self, tx: BaseTransaction) -> None:
57
57
assert tx .hash is not None
58
58
59
59
for key in self ._extract_keys (tx ):
60
- self .index [key ].discard (tx .hash )
60
+ self .index [key ].discard (( tx .timestamp , tx . hash ) )
61
61
62
62
def _get_from_key (self , key : KT ) -> Iterable [bytes ]:
63
- yield from self .index [key ]
63
+ for _ , h in self .index [key ]:
64
+ yield h
64
65
65
66
def _get_sorted_from_key (self , key : KT ) -> Iterable [bytes ]:
66
- return sorted (self .index [key ])
67
+ return [ h for t , h in sorted (self .index [key ])]
67
68
68
69
def _is_key_empty (self , key : KT ) -> bool :
69
70
return not bool (self .index [key ])
0 commit comments