annotate sat/plugins/plugin_misc_debug.py @ 3913:944f51f9c2b4

core (xmpp): make `send` a blocking method, fix `sendMessageData` calls: original `send` method is blocking, and it is used as such by Wokkel and thus can't be changed to an async method easily. However, an Async method is necessary to have an async trigger at the very end of the send workflow for end-to-end encryption. To workaround that, `send` is an async method which call `a_send`, an async method which actually does the sending. This way legacy method can still call `send` while `a_send` can be await otherwise. Fix calls to `sendMessageData`: the method now being an `async` one, `ensureDeferred` had to be used in some calls.
author Goffi <goffi@goffi.org>
date Sat, 24 Sep 2022 16:31:39 +0200
parents 2b0f739f8a46
children 524856bd7b19
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
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
20 from sat.core.i18n import _
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
21 from sat.core.log import getLogger
3126
2b0f739f8a46 plugin manhole: added "C" to namespace
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
22 from sat.core.constants import Const as C
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
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
43 host.bridge.addMethod(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
44 "debugFakeSignal",
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="",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
48 method=self._fakeSignal,
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
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
51 def _fakeSignal(self, signal, arguments, profile_key):
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:
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
61 profile = self.host.memory.getProfileName(profile_key)
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)