send skipped entries instead of dropping them

This commit is contained in:
augustin_s committed 2026-10-02 11:31:52 +02:00
1 parent eccc25b373
commit 1caaa6ef4a
1 file changed
+11 -5
+11 -5
View File
@@ -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