comparison sat/bridge/pb.py @ 2840:0f277708e2ae

bridge (pb): added bridgeDeactivateSignals and bridgeReactivateSignals methods: those methods stop and restart signals propagation, they are used on mobile OS when the frontend is paused.
author Goffi <goffi@goffi.org>
date Sat, 09 Mar 2019 16:23:00 +0100
parents 003b8b4b56a7
children eb9fa72eb62b
comparison
equal deleted inserted replaced
2839:76f714b12d21 2840:0f277708e2ae
67 if to_remove: 67 if to_remove:
68 for handler in to_remove: 68 for handler in to_remove:
69 log.debug(u"Removing signal handler for dead frontend") 69 log.debug(u"Removing signal handler for dead frontend")
70 self.signals_handlers.remove(handler) 70 self.signals_handlers.remove(handler)
71 71
72 def _bridgeDeactivateSignals(self):
73 if hasattr(self, "signals_paused"):
74 log.warning(u"bridge signals already deactivated")
75 if self.signals_handler:
76 self.signals_paused.extend(self.signals_handler)
77 else:
78 self.signals_paused = self.signals_handlers
79 self.signals_handlers = []
80 log.debug(u"bridge signals have been deactivated")
81
82 def _bridgeReactivateSignals(self):
83 try:
84 self.signals_handlers = self.signals_paused
85 except AttributeError:
86 log.debug(u"signals were already activated")
87 else:
88 del self.signals_paused
89 log.debug(u"bridge signals have been reactivated")
72 90
73 ##METHODS_PART## 91 ##METHODS_PART##
74 92
75 93
76 class Bridge(object): 94 class Bridge(object):
101 log.debug("Adding signal {name} to PB bridge".format(name=name)) 119 log.debug("Adding signal {name} to PB bridge".format(name=name))
102 setattr( 120 setattr(
103 self, name, lambda *args, **kwargs: self.sendSignal(name, *args, **kwargs) 121 self, name, lambda *args, **kwargs: self.sendSignal(name, *args, **kwargs)
104 ) 122 )
105 123
124 def bridgeDeactivateSignals(self):
125 """Stop sending signals to bridge
126
127 Mainly used for mobile frontends, when the frontend is paused
128 """
129 self.root._bridgeDeactivateSignals()
130
131 def bridgeReactivateSignals(self):
132 """Send again signals to bridge
133
134 Should only be used after bridgeDeactivateSignals has been called
135 """
136 self.root._bridgeReactivateSignals()
106 137
107 def actionNew(self, action_data, id, security_limit, profile): 138 def actionNew(self, action_data, id, security_limit, profile):
108 self.sendSignal("actionNew", action_data, id, security_limit, profile) 139 self.sendSignal("actionNew", action_data, id, security_limit, profile)
109 140
110 def connected(self, profile, jid_s): 141 def connected(self, profile, jid_s):