28 lines
899 B
Python
28 lines
899 B
Python
import threading
|
|
|
|
class SessionManager:
|
|
def __init__(self, sess):
|
|
self.sess = sess
|
|
self._lock = threading.Lock()
|
|
self._running_count = 0 # wie viele Devices wollen gerade streamen?
|
|
|
|
def start(self):
|
|
with self._lock:
|
|
if self._running_count == 0:
|
|
# Erster „Kunde“ → Session-Stream starten
|
|
self.sess.start(0) # 0 = endlos
|
|
self._running_count += 1
|
|
return self._running_count
|
|
|
|
def stop(self):
|
|
with self._lock:
|
|
if self._running_count > 0:
|
|
self._running_count -= 1
|
|
if self._running_count == 0:
|
|
# Letzter „Kunde“ ist weg → Session beenden
|
|
self.sess.end()
|
|
return self._running_count
|
|
|
|
def running_devices(self):
|
|
with self._lock:
|
|
return self._running_count |