aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Weth <git@jonathanweth.de>2020-07-27 11:43:43 +0200
committerJonathan Weth <git@jonathanweth.de>2020-07-27 11:43:43 +0200
commita6115f21a121e954fa2714753b16c81bfcc05989 (patch)
treeedb33c3c03589e4a1591df5cec165d2886c25687
parentdf32d50ab72d35c2a727fe46ef704fd6729b0c5c (diff)
downloadRWA.Support.SessionService-a6115f21a121e954fa2714753b16c81bfcc05989.tar.gz
RWA.Support.SessionService-a6115f21a121e954fa2714753b16c81bfcc05989.tar.bz2
RWA.Support.SessionService-a6115f21a121e954fa2714753b16c81bfcc05989.zip
Ensure that only one just can run
Close #6
-rw-r--r--API.rst10
-rwxr-xr-xservice.py10
2 files changed, 16 insertions, 4 deletions
diff --git a/API.rst b/API.rst
index dd67cf1..9cec20b 100644
--- a/API.rst
+++ b/API.rst
@@ -19,11 +19,17 @@ Start a new remote session and register it in RWA
**Return type:** string (JSON)
-**Structure of returned JSON:**
+**Structure of returned JSON (success):**
+
+::
+
+ {"status": "success", "id": <pid>, "url": "<url>", "pin": <pin>}
+
+**Structure of returned JSON (error):**
::
- {"id": <pid>, "url": "<url>", "pin": <pin>}
+ {"status": "error"}
status
diff --git a/service.py b/service.py
index 47ebfcb..9d5394f 100755
--- a/service.py
+++ b/service.py
@@ -13,7 +13,7 @@ from session import Session
from trigger import TriggerServerThread
ONE_TIME_SERVICE = False
-
+ALLOW_ONLY_ONE_SESSION = True
class RWAService(dbus.service.Object):
def __init__(self, loop, mockup_mode: bool = False):
@@ -33,6 +33,9 @@ class RWAService(dbus.service.Object):
@dbus.service.method("org.ArcticaProject.RWA", out_signature="s")
def start(self):
"""Start a new remote session."""
+ if ALLOW_ONLY_ONE_SESSION and len(self.sessions.values()) > 0:
+ return json.dumps({"status": "error"})
+
# Start session
session = Session(self.trigger_service.port, mockup_mode)
@@ -42,7 +45,10 @@ class RWAService(dbus.service.Object):
# Start session update service
self._ensure_update_service()
- return json.dumps(session.client_meta)
+ return_json = session.client_meta
+ return_json["status"] = "success"
+
+ return json.dumps(return_json)
@dbus.service.method("org.ArcticaProject.RWA", in_signature="i", out_signature="s")
def status(self, pid: int) -> str: