summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/daemon.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/daemon.py')
-rw-r--r--packages/meshbay-node/src/meshbay_node/daemon.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/daemon.py b/packages/meshbay-node/src/meshbay_node/daemon.py
index 932a90d..a43e3a3 100644
--- a/packages/meshbay-node/src/meshbay_node/daemon.py
+++ b/packages/meshbay-node/src/meshbay_node/daemon.py
@@ -1163,14 +1163,16 @@ class NodeDaemon:
parameter (not a bare constant) only so a test can drive this loop
without waiting on the real 2s cadence.
"""
- was_scanning = False
+ was_busy = False
while True:
await asyncio.sleep(interval)
progress = indexer.progress
- now_scanning = progress.scanning
- if now_scanning or was_scanning:
+ # A root waiting for the scan lock is work the operator is owed a
+ # sight of, even in the gap where nothing is walking yet.
+ busy = progress.scanning or bool(progress.queued)
+ if busy or was_busy:
self._push_index_progress(indexer.group_id, progress)
- was_scanning = now_scanning
+ was_busy = busy
def _push_index_progress(self, group_id: str, progress) -> None:
if not self._webrtc:
@@ -1181,7 +1183,9 @@ class NodeDaemon:
# scan. Sealing it would buy an attacker's rough estimate of a library's
# size and cost a key derivation and a decrypt per push. If a field that
# names anything is ever added here, that trade is void and this message
- # joins the other two.
+ # joins the other two. `kind` is one of four fixed words; the root under
+ # way is a position in the roots table the member already opened from
+ # the sealed index, and the roots waiting are a count, never names.
msg = {
"type": MNP.INDEX_PROGRESS,
"v": MNP_VERSION,
@@ -1189,6 +1193,11 @@ class NodeDaemon:
"scanning": progress.scanning,
"scanned_bytes": progress.scanned_bytes,
"total_bytes": progress.total_bytes,
+ "files_done": progress.files_done,
+ "files_total": progress.files_total,
+ "kind": progress.kind,
+ "root_pos": progress.root_pos,
+ "queued": len(progress.queued),
}
pushed = 0
for session in list(self._webrtc._sessions.values()):