diff --git a/dap/utils/sorter.py b/dap/utils/sorter.py index 4a9480f..f07e1e5 100644 --- a/dap/utils/sorter.py +++ b/dap/utils/sorter.py @@ -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