Changeset

13015:46c05c2e34f7

moduleapi: Add module:once() to execute a function after module load/startup It is a common pattern for modules to do something like check for prosody.start_time, and execute code immediately if it is present, or wait for the server-started event if it isn't yet. For example, this allows you to run code after all other modules/hosts have been loaded, that are going to be loaded. Such code can now be replaced with a simple call to this method.
author Matthew Wild <mwild1@gmail.com>
date Sat, 01 Apr 2023 11:59:50 +0100
parents 13014:06453c564141
children 13016:8aec903ea888
files core/moduleapi.lua
diffstat 1 files changed, 5 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/core/moduleapi.lua	Sat Apr 01 11:56:38 2023 +0100
+++ b/core/moduleapi.lua	Sat Apr 01 11:59:50 2023 +0100
@@ -693,4 +693,9 @@
 	end
 end
 
+-- Execute a function, once, but only after startup is complete
+function api:once(f)
+	return prosody.started:next(f);
+end
+
 return api;