Mercurial > libervia-backend
changeset 4362:d34b17bce612
core: Add a "Global" variable with a `LiberviaBackend` singleton to `libervia.backend`.
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 06 May 2025 00:16:15 +0200 |
parents | 676a320415b9 |
children | 4da560a8aed3 |
files | libervia/backend/__init__.py libervia/backend/core/main.py |
diffstat | 2 files changed, 29 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libervia/backend/__init__.py Fri Apr 11 21:49:46 2025 +0200 +++ b/libervia/backend/__init__.py Tue May 06 00:16:15 2025 +0200 @@ -15,9 +15,36 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +from typing import TYPE_CHECKING from sat_tmp import wokkel __version__ = "0.9.0.dev0" if not wokkel.installed: wokkel.install() + +if TYPE_CHECKING: + from libervia.backend.core.main import LiberviaBackend + from libervia.backend.memory.sqla import Storage + + +class Global: + + def __init__(self): + self._host: "LiberviaBackend|None" = None + + def set_host(self, host: "LiberviaBackend") -> None: + """This method set the backend, and must be called once.""" + assert self._host is None + self._host = host + + @property + def host(self) -> "LiberviaBackend": + assert self._host is not None + return self._host + + @property + def storage(self) -> "Storage": + return self.host.memory.storage + +G = Global()
--- a/libervia/backend/core/main.py Fri Apr 11 21:49:46 2025 +0200 +++ b/libervia/backend/core/main.py Tue May 06 00:16:15 2025 +0200 @@ -36,6 +36,7 @@ from twisted.words.protocols.jabber import jid from twisted.internet import reactor from wokkel.xmppim import RosterItem +from libervia.backend import G from libervia.backend.core import xmpp from libervia.backend.core import exceptions from libervia.backend.core.core_types import SatXMPPEntity @@ -65,6 +66,7 @@ # we don't use __init__ to avoid doule initialisation with twistd # this _init is called in startService log.info(f"{C.APP_NAME} {self.full_version}") + G.set_host(self) self._cb_map = {} # map from callback_id to callbacks # dynamic menus. key: callback_id, value: menu data (dictionnary) self._menus = {}