annotate libervia/backend/plugins/plugin_misc_debug.py @ 4240:79c8a70e1813

backend, frontend: prepare remote control: This is a series of changes necessary to prepare the implementation of remote control feature: - XEP-0166: add a `priority` attribute to `ApplicationData`: this is needed when several applications are working in a same session, to know which one must be handled first. Will be used to make Remote Control have precedence over Call content. - XEP-0166: `_call_plugins` is now async and is not used with `DeferredList` anymore: the benefit to have methods called in parallels is very low, and it cause a lot of trouble as we can't predict order. Methods are now called sequentially so workflow can be predicted. - XEP-0167: fix `senders` XMPP attribute <=> SDP mapping - XEP-0234: preflight acceptance key is now `pre-accepted` instead of `file-accepted`, so the same key can be used with other jingle applications. - XEP-0167, XEP-0343: move some method to XEP-0167 - XEP-0353: use new `priority` feature to call preflight methods of applications according to it. - frontend (webrtc): refactor the sources/sink handling with a more flexible mechanism based on Pydantic models. It is now possible to have has many Data Channel as necessary, to have them in addition to A/V streams, to specify manually GStreamer sources and sinks, etc. - frontend (webrtc): rework of the pipeline to reduce latency. - frontend: new `portal_desktop` method. Screenshare portal handling has been moved there, and RemoteDesktop portal has been added. - frontend (webrtc): fix `extract_ufrag_pwd` method. rel 436
author Goffi <goffi@goffi.org>
date Sat, 11 May 2024 13:52:41 +0200
parents 4b842c1fb686
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2624
diff changeset
1 #!/usr/bin/env python3
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
2
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
3 # SàT plugin for managing raw XML log
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
5
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
6 # This program is free software: you can redistribute it and/or modify
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # it under the terms of the GNU Affero General Public License as published by
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # the Free Software Foundation, either version 3 of the License, or
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # (at your option) any later version.
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
10
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
11 # This program is distributed in the hope that it will be useful,
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # GNU Affero General Public License for more details.
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
15
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
16 # You should have received a copy of the GNU Affero General Public License
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
18
3126
2b0f739f8a46 plugin manhole: added "C" to namespace
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
19 import json
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
20 from libervia.backend.core.i18n import _
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
21 from libervia.backend.core.log import getLogger
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
22 from libervia.backend.core.constants import Const as C
3126
2b0f739f8a46 plugin manhole: added "C" to namespace
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
23
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
24
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
25 log = getLogger(__name__)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
26
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
27 PLUGIN_INFO = {
2145
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
28 C.PI_NAME: "Debug Plugin",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
29 C.PI_IMPORT_NAME: "DEBUG",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
30 C.PI_TYPE: "Misc",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
31 C.PI_PROTOCOLS: [],
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
32 C.PI_DEPENDENCIES: [],
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
33 C.PI_MAIN: "Debug",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2037
diff changeset
34 C.PI_HANDLER: "no",
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
35 C.PI_DESCRIPTION: _("""Set of method to make development and debugging easier"""),
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
36 }
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
37
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
38
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
39 class Debug(object):
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
40 def __init__(self, host):
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
41 log.info(_("Plugin Debug initialization"))
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
42 self.host = host
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3126
diff changeset
43 host.bridge.add_method(
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3126
diff changeset
44 "debug_signal_fake",
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
45 ".plugin",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
46 in_sign="sss",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
47 out_sign="",
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3126
diff changeset
48 method=self._fake_signal,
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
49 )
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
50
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3126
diff changeset
51 def _fake_signal(self, signal, arguments, profile_key):
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
52 """send a signal from backend
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
53
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
54 @param signal(str): name of the signal
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
55 @param arguments(unicode): json encoded list of arguments
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
56 @parm profile_key(unicode): profile_key to use or C.PROF_KEY_NONE if profile is not needed
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
57 """
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
58 args = json.loads(arguments)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
59 method = getattr(self.host.bridge, signal)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
60 if profile_key != C.PROF_KEY_NONE:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3126
diff changeset
61 profile = self.host.memory.get_profile_name(profile_key)
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
62 args.append(profile)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
63 method(*args)