aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/roster.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/roster.py')
-rw-r--r--packages/meshbay-node/src/meshbay_node/roster.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/roster.py b/packages/meshbay-node/src/meshbay_node/roster.py
index 1cc8cae..6eb7651 100644
--- a/packages/meshbay-node/src/meshbay_node/roster.py
+++ b/packages/meshbay-node/src/meshbay_node/roster.py
@@ -599,6 +599,39 @@ class Roster:
json.dumps(sorted(apps)), set_by)
return apps
+ # How often the indexer's reconciliation backstop runs, and how long it
+ # waits after the last change on a file before hashing it. Unset means
+ # the indexer's own defaults — an existing group's behaviour must not
+ # change because a node was upgraded. See indexer.py DirectoryIndexer
+ # for what these actually do and why the defaults are what they are.
+ SETTING_RECONCILE_INTERVAL = "reconcile_interval_secs"
+ SETTING_DEBOUNCE_SECS = "debounce_secs"
+
+ async def scan_settings(self, group_id: str) -> dict:
+ # Imported here, not at module load: roster.py is loaded before the
+ # indexer package during startup, and this is the only place the two
+ # need each other's names.
+ from meshbay_node.indexer.indexer import DirectoryIndexer
+
+ reconcile = await self.get_setting(group_id, self.SETTING_RECONCILE_INTERVAL)
+ debounce = await self.get_setting(group_id, self.SETTING_DEBOUNCE_SECS)
+ return {
+ "reconcile_interval_secs": (
+ float(reconcile) if reconcile is not None
+ else DirectoryIndexer.DEFAULT_RECONCILE_SECS),
+ "debounce_secs": (
+ float(debounce) if debounce is not None
+ else DirectoryIndexer.DEFAULT_DEBOUNCE_SECS),
+ }
+
+ async def set_scan_settings(self, group_id: str, reconcile_interval_secs: float,
+ debounce_secs: float, set_by: str = "") -> dict:
+ await self.set_setting(group_id, self.SETTING_RECONCILE_INTERVAL,
+ str(float(reconcile_interval_secs)), set_by)
+ await self.set_setting(group_id, self.SETTING_DEBOUNCE_SECS,
+ str(float(debounce_secs)), set_by)
+ return await self.scan_settings(group_id)
+
async def create_invite(
self,
group_id: str,