- while True:
- print('WayDroid waiting for initialization...')
- msg = helpers.ipc.read_one(channel="init")
- if msg == "done":
- if is_initialized(args):
- break
- else:
- continue
- if msg.startswith("cmd"):
- remote_init_server(args, msg)
- continue
+
+ name = dbus.service.BusName("id.waydro.ContainerService", dbus.SystemBus())
+ mainloop = GLib.MainLoop()
+ dbus_obj = DbusInitializer(mainloop, dbus.SystemBus(), '/Initializer', args)
+ mainloop.run()
+
+class DbusInitializer(dbus.service.Object):
+ def __init__(self, looper, bus, object_path, args):
+ self.args = args
+ self.looper = looper
+ dbus.service.Object.__init__(self, bus, object_path)
+
+ @dbus.service.method("id.waydro.Initializer", in_signature='a{ss}', out_signature='')
+ def Init(self, params):
+ threading.Thread(target=remote_init_server, args=(self.args, params)).start()
+
+ @dbus.service.method("id.waydro.Initializer", in_signature='', out_signature='')
+ def Done(self):
+ if is_initialized(self.args):
+ self.looper.quit()