Mercurial > libervia-backend
comparison sat/bridge/bridge_constructor/constructors/pb/pb_core_template.py @ 2624:56f94936df1e
code style reformatting using black
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 27 Jun 2018 20:14:46 +0200 |
parents | 26edcf3a30eb |
children | 003b8b4b56a7 |
comparison
equal
deleted
inserted
replaced
2623:49533de4540b | 2624:56f94936df1e |
---|---|
1 #!/usr/bin/env python2 | 1 #!/usr/bin/env python2 |
2 #-*- coding: utf-8 -*- | 2 # -*- coding: utf-8 -*- |
3 | 3 |
4 # SAT: a jabber client | 4 # SAT: a jabber client |
5 # Copyright (C) 2009-2018 Jérôme Poisson (goffi@goffi.org) | 5 # Copyright (C) 2009-2018 Jérôme Poisson (goffi@goffi.org) |
6 | 6 |
7 # This program is free software: you can redistribute it and/or modify | 7 # This program is free software: you can redistribute it and/or modify |
17 # You should have received a copy of the GNU Affero General Public License | 17 # You should have received a copy of the GNU Affero General Public License |
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. | 18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
19 | 19 |
20 | 20 |
21 from sat.core.log import getLogger | 21 from sat.core.log import getLogger |
22 | |
22 log = getLogger(__name__) | 23 log = getLogger(__name__) |
23 from twisted.spread import jelly, pb | 24 from twisted.spread import jelly, pb |
24 from twisted.internet import reactor | 25 from twisted.internet import reactor |
25 | 26 |
26 | 27 |
27 ## jelly hack | 28 ## jelly hack |
28 # we monkey patch jelly to handle namedtuple | 29 # we monkey patch jelly to handle namedtuple |
29 ori_jelly = jelly._Jellier.jelly | 30 ori_jelly = jelly._Jellier.jelly |
30 | 31 |
32 | |
31 def fixed_jelly(self, obj): | 33 def fixed_jelly(self, obj): |
32 """this method fix handling of namedtuple""" | 34 """this method fix handling of namedtuple""" |
33 if isinstance(obj, tuple) and not obj is tuple: | 35 if isinstance(obj, tuple) and not obj is tuple: |
34 obj = tuple(obj) | 36 obj = tuple(obj) |
35 return ori_jelly(self, obj) | 37 return ori_jelly(self, obj) |
36 | 38 |
39 | |
37 jelly._Jellier.jelly = fixed_jelly | 40 jelly._Jellier.jelly = fixed_jelly |
38 | 41 |
39 | 42 |
40 class PBRoot(pb.Root): | 43 class PBRoot(pb.Root): |
41 | |
42 def __init__(self): | 44 def __init__(self): |
43 self.signals_handlers = [] | 45 self.signals_handlers = [] |
44 | 46 |
45 def remote_initBridge(self, signals_handler): | 47 def remote_initBridge(self, signals_handler): |
46 self.signals_handlers.append(signals_handler) | 48 self.signals_handlers.append(signals_handler) |
47 log.info(u"registered signal handler") | 49 log.info(u"registered signal handler") |
48 | 50 |
49 def sendSignalEb(self, failure, signal_name): | 51 def sendSignalEb(self, failure, signal_name): |
50 log.error(u"Error while sending signal {name}: {msg}".format( | 52 log.error( |
51 name = signal_name, | 53 u"Error while sending signal {name}: {msg}".format( |
52 msg = failure, | 54 name=signal_name, msg=failure |
53 )) | 55 ) |
56 ) | |
54 | 57 |
55 def sendSignal(self, name, args, kwargs): | 58 def sendSignal(self, name, args, kwargs): |
56 to_remove = [] | 59 to_remove = [] |
57 for handler in self.signals_handlers: | 60 for handler in self.signals_handlers: |
58 try: | 61 try: |
64 if to_remove: | 67 if to_remove: |
65 for handler in to_remove: | 68 for handler in to_remove: |
66 log.debug(u"Removing signal handler for dead frontend") | 69 log.debug(u"Removing signal handler for dead frontend") |
67 self.signals_handlers.remove(handler) | 70 self.signals_handlers.remove(handler) |
68 | 71 |
72 | |
69 ##METHODS_PART## | 73 ##METHODS_PART## |
70 | 74 |
71 | 75 |
72 class Bridge(object): | 76 class Bridge(object): |
73 | |
74 def __init__(self): | 77 def __init__(self): |
75 log.info("Init Perspective Broker...") | 78 log.info("Init Perspective Broker...") |
76 self.root = PBRoot() | 79 self.root = PBRoot() |
77 reactor.listenTCP(8789, pb.PBServerFactory(self.root)) | 80 reactor.listenTCP(8789, pb.PBServerFactory(self.root)) |
78 | 81 |
83 self.signals_handlers.append(signals_handler) | 86 self.signals_handlers.append(signals_handler) |
84 log.info(u"registered signal handler") | 87 log.info(u"registered signal handler") |
85 | 88 |
86 def register_method(self, name, callback): | 89 def register_method(self, name, callback): |
87 log.debug("registering PB bridge method [%s]" % name) | 90 log.debug("registering PB bridge method [%s]" % name) |
88 setattr(self.root, "remote_"+name, callback) | 91 setattr(self.root, "remote_" + name, callback) |
89 # self.root.register_method(name, callback) | 92 # self.root.register_method(name, callback) |
90 | 93 |
91 def addMethod(self, name, int_suffix, in_sign, out_sign, method, async=False, doc={}): | 94 def addMethod(self, name, int_suffix, in_sign, out_sign, method, async=False, doc={}): |
92 """Dynamically add a method to PB Bridge""" | 95 """Dynamically add a method to PB Bridge""" |
93 #FIXME: doc parameter is kept only temporary, the time to remove it from calls | 96 # FIXME: doc parameter is kept only temporary, the time to remove it from calls |
94 log.debug("Adding method {name} to PB bridge".format(name=name)) | 97 log.debug("Adding method {name} to PB bridge".format(name=name)) |
95 self.register_method(name, method) | 98 self.register_method(name, method) |
96 | 99 |
97 def addSignal(self, name, int_suffix, signature, doc={}): | 100 def addSignal(self, name, int_suffix, signature, doc={}): |
98 log.debug("Adding signal {name} to PB bridge".format(name=name)) | 101 log.debug("Adding signal {name} to PB bridge".format(name=name)) |
99 setattr(self, name, lambda *args, **kwargs: self.sendSignal(name, *args, **kwargs)) | 102 setattr( |
103 self, name, lambda *args, **kwargs: self.sendSignal(name, *args, **kwargs) | |
104 ) | |
105 | |
100 | 106 |
101 ##SIGNALS_PART## | 107 ##SIGNALS_PART## |