From 0329addd1fdbfcedd26917b24886090086f1ec69 Mon Sep 17 00:00:00 2001 From: Houkime <> Date: Thu, 25 Jul 2024 17:23:02 +0000 Subject: [PATCH] feature(services): add perma-active services (api itself) --- selfprivacy_api/services/service.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/selfprivacy_api/services/service.py b/selfprivacy_api/services/service.py index 6fbc5f7..3295c04 100644 --- a/selfprivacy_api/services/service.py +++ b/selfprivacy_api/services/service.py @@ -110,6 +110,11 @@ class Service(ABC): """ return cls.get_user() + @staticmethod + def is_always_active() -> bool: + """`True` if the service cannot be stopped, which is true for api itself""" + return False + @staticmethod @abstractmethod def is_movable() -> bool: @@ -498,7 +503,10 @@ class StoppedService: def __enter__(self) -> Service: self.original_status = self.service.get_status() - if self.original_status not in [ServiceStatus.INACTIVE, ServiceStatus.FAILED]: + if ( + self.original_status not in [ServiceStatus.INACTIVE, ServiceStatus.FAILED] + and not self.service.is_always_active() + ): try: self.service.stop() wait_until_true( @@ -513,7 +521,10 @@ class StoppedService: return self.service def __exit__(self, type, value, traceback): - if self.original_status in [ServiceStatus.ACTIVATING, ServiceStatus.ACTIVE]: + if ( + self.original_status in [ServiceStatus.ACTIVATING, ServiceStatus.ACTIVE] + and not self.service.is_always_active() + ): try: self.service.start() wait_until_true(