core: Add a "Global" variable with a LiberviaBackend singleton to libervia.backend.
This commit is contained in:
parent
58a0e168e2
commit
c008b65e63
2 changed files with 29 additions and 0 deletions
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ from twisted.internet import defer
|
|||
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 @@ class LiberviaBackend(service.Service):
|
|||
# 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 = {}
|
||||
|
|
|
|||
Loading…
Reference in a new issue