diff options
Diffstat (limited to 'service.py')
-rwxr-xr-x | service.py | 31 |
1 files changed, 20 insertions, 11 deletions
@@ -70,30 +70,39 @@ class RWAService(dbus.service.Object): :: - {"status": "error"} + {"status": "error", "type": "<type>"} + + **Possible choices for error types:** ``multiple``, ``connection`` """ if ALLOW_ONLY_ONE_SESSION and len(self.sessions.values()) > 0: logging.warning( "There is already one session running and the service is configured to allow only one " "session, so this session won't be started." ) - return json.dumps({"status": "error"}) + return json.dumps({"status": "error", "type": "multiple"}) # Start session - session = Session(self.trigger_service.port, mockup_mode) + try: + session = Session(self.trigger_service.port, mockup_mode) - # Add session to sessions list - self.sessions[session.pid] = session + # Add session to sessions list + self.sessions[session.pid] = session - # Start session update service - self._ensure_update_service() + # Start session update service + self._ensure_update_service() - return_json = session.client_meta - return_json["status"] = "success" + return_json = session.client_meta + return_json["status"] = "success" - logging.info(f"New session #{session.pid} was started with meta {return_json}.") + logging.info( + f"New session #{session.pid} was started with meta {return_json}." + ) + + return json.dumps(return_json) + except ConnectionError: + pass - return json.dumps(return_json) + return json.dumps({"status": "error", "type": "connection"}) @dbus.service.method("org.ArcticaProject.RWA", in_signature="i", out_signature="s") def status(self, pid: int) -> str: |