Mercurial > libervia-desktop-kivy
diff src/cagou/core/cagou_main.py @ 64:8e16abcadbb8
core: launch SàT backend as a service on Android and wait for it on pb bridge connection.
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 13 Dec 2016 23:10:43 +0100 |
parents | af4f986d86f0 |
children | 1c738621bc8d |
line wrap: on
line diff
--- a/src/cagou/core/cagou_main.py Tue Dec 13 23:10:41 2016 +0100 +++ b/src/cagou/core/cagou_main.py Tue Dec 13 23:10:43 2016 +0100 @@ -234,6 +234,12 @@ if bridge_name == 'embedded': from sat.core import sat_main self.sat = sat_main.SAT() + if sys.platform == 'android': + from android import AndroidService + service = AndroidService(u'Cagou (SàT)'.encode('utf-8'), u'Salut à Toi backend'.encode('utf-8')) + service.start(u'service started') + self.service = service + bridge_module = dynamic_import.bridge(bridge_name, 'sat_frontends.bridge') if bridge_module is None: log.error(u"Can't import {} bridge".format(bridge_name)) @@ -260,6 +266,20 @@ super(Cagou, self)._bridgeCb() self.bridge.getReady(self.onBackendReady) + def _bridgeEb(self, failure): + if bridge_name == "pb" and sys.platform == "android": + try: + self.retried += 1 + except AttributeError: + self.retried = 1 + from twisted.internet.error import ConnectionRefusedError + if failure.check(ConnectionRefusedError) and self.retried < 100: + if self.retried % 20 == 0: + log.debug("backend not ready, retrying ({})".format(self.retried)) + Clock.schedule_once(lambda dummy: self.connectBridge(), 0.05) + return + super(Cagou, self)._bridgeEb(failure) + def run(self): self.connectBridge() self.app.bind(on_stop=self.onStop)