diff --git a/src/onionrcommands/daemonlaunch/__init__.py b/src/onionrcommands/daemonlaunch/__init__.py index 752e4b85..16ee35cb 100755 --- a/src/onionrcommands/daemonlaunch/__init__.py +++ b/src/onionrcommands/daemonlaunch/__init__.py @@ -62,7 +62,7 @@ def daemon(): def _handle_sig_term(signum, frame): sys.exit(0) - + with open(filepaths.pid_file, 'w') as f: f.write(str(os.getpid())) @@ -77,14 +77,15 @@ def daemon(): logger.info( f"Onionr daemon is running under pid {os.getpid()}", terminal=True) events.event('init', threaded=False) + events.event('afterinit', threaded=False) events.event('daemon_start') add_onionr_thread( clean_block_database, 60, 'clean_block_database', initial_sleep=0) Thread( - target=gossip.start_gossip_threads, - daemon=True, + target=gossip.start_gossip_threads, + daemon=True, name='start_gossip_threads').start() try: diff --git a/src/onionrplugins/pluginapis.py b/src/onionrplugins/pluginapis.py index c85de443..e8ad7480 100644 --- a/src/onionrplugins/pluginapis.py +++ b/src/onionrplugins/pluginapis.py @@ -1 +1,7 @@ -plugin_apis = {} \ No newline at end of file +# +from typing import Callable, Dict + +# plugin apis are methods intended to be available to the rpc +# plugin, this is so plugins can provide apis to other plugins +# plugins add their methods during or before afterinit event +plugin_apis: Dict[str, Callable] = {} \ No newline at end of file diff --git a/static-data/default-plugins/rpc/main.py b/static-data/default-plugins/rpc/main.py index 8d14a07c..e58e84d9 100644 --- a/static-data/default-plugins/rpc/main.py +++ b/static-data/default-plugins/rpc/main.py @@ -43,7 +43,7 @@ import ujson jsonrpc.manager.json = ujson # RPC modules map Onionr APIs to the RPC dispacher -from rpc import blocks +from rpc import blocks, pluginrpcmethods class OnionrRPC(object): @@ -57,6 +57,10 @@ class OnionrRPC(object): return response.json +def on_afterinit(api, data=None): + pluginrpcmethods.add_plugin_rpc_methods() + + def on_init(api, data=None): config = { #'server.socket_file': socket_file_path, @@ -68,4 +72,3 @@ def on_init(api, data=None): add_onionr_thread( cherrypy.quickstart, 5, 'OnionrRPCServer', OnionrRPC(), initial_sleep=0) - \ No newline at end of file