send skipped entries instead of dropping them
This commit is contained in:
1 parent
eccc25b373
commit
1caaa6ef4a
1 file changed
+11
-5
+11
-5
@@ -1,3 +1,5 @@
|
||||
from logzero import logger as log
|
||||
|
||||
|
||||
class Sorter:
|
||||
|
||||
@@ -12,6 +14,7 @@ class Sorter:
|
||||
|
||||
def add(self, ID, data):
|
||||
if ID < self.next_ID:
|
||||
log.warning(f"refused {ID} < {self.next_ID}")
|
||||
return
|
||||
self.buffer[ID] = data
|
||||
self.max_ID = max(self.max_ID, ID)
|
||||
@@ -20,7 +23,7 @@ class Sorter:
|
||||
res = self._collect_contiguous_IDs()
|
||||
skipped = self._skip_over_gap()
|
||||
if skipped:
|
||||
self._drop_old_entries()
|
||||
res += self._drop_old_entries()
|
||||
return res
|
||||
|
||||
def _collect_contiguous_IDs(self):
|
||||
@@ -39,10 +42,13 @@ class Sorter:
|
||||
return skip
|
||||
|
||||
def _drop_old_entries(self):
|
||||
for i in list(self.buffer):
|
||||
if i < self.next_ID:
|
||||
del self.buffer[i]
|
||||
|
||||
res = []
|
||||
for i in sorted(self.buffer):
|
||||
if i >= self.next_ID:
|
||||
break
|
||||
current = self.buffer.pop(i)
|
||||
res.append((i, current))
|
||||
return res
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user