option to stream forever

This commit is contained in:
Devaev Maxim
2020-09-17 13:10:53 +03:00
parent f46c6f6372
commit 649ca0c6bc
3 changed files with 10 additions and 2 deletions

View File

@@ -314,6 +314,8 @@ def _get_config_scheme() -> Dict:
},
"streamer": {
"forever": Option(False, type=valid_bool),
"reset_delay": Option(1.0, type=valid_float_f0),
"shutdown_delay": Option(10.0, type=valid_float_f01),
"state_poll": Option(1.0, type=valid_float_f01),

View File

@@ -64,7 +64,7 @@ def main(argv: Optional[List[str]]=None) -> None:
config = config.kvmd
hid = get_hid_class(config.hid.type)(**config.hid._unpack(ignore=["type", "keymap"]))
streamer = Streamer(**config.streamer._unpack())
streamer = Streamer(**config.streamer._unpack(ignore=["forever"]))
KvmdServer(
auth_manager=AuthManager(
@@ -95,6 +95,8 @@ def main(argv: Optional[List[str]]=None) -> None:
sync_chunk_size=config.server.sync_chunk_size,
keymap_path=config.hid.keymap,
stream_forever=config.streamer.forever,
).run(**config.server._unpack(ignore=["heartbeat", "sync_chunk_size"]))
get_logger(0).info("Bye-bye")

View File

@@ -154,6 +154,8 @@ class KvmdServer(HttpServer): # pylint: disable=too-many-arguments,too-many-ins
sync_chunk_size: int,
keymap_path: str,
stream_forever: bool,
) -> None:
self.__auth_manager = auth_manager
@@ -164,6 +166,8 @@ class KvmdServer(HttpServer): # pylint: disable=too-many-arguments,too-many-ins
self.__heartbeat = heartbeat
self.__stream_forever = stream_forever
self.__components = [
*[
_Component("Auth manager", "", auth_manager),
@@ -399,7 +403,7 @@ class KvmdServer(HttpServer): # pylint: disable=too-many-arguments,too-many-ins
async def __stream_controller(self) -> None:
prev = False
while True:
cur = (self.__has_stream_clients() or self.__snapshoter.snapshoting())
cur = (self.__has_stream_clients() or self.__snapshoter.snapshoting() or self.__stream_forever)
if not prev and cur:
await self.__streamer.ensure_start(reset=False)
elif prev and not cur: