Browse Source

events: add function to remove event handlers

Event handlers for remote mgmt API will be registered dynamically, so
allow to unregister them.

QubesOS/qubes-issues#2622
Marek Marczykowski-Górecki 7 years ago
parent
commit
ee967c1e72
1 changed files with 11 additions and 0 deletions
  1. 11 0
      qubes/events.py

+ 11 - 0
qubes/events.py

@@ -115,6 +115,17 @@ class Emitter(object, metaclass=EmitterMeta):
         # pylint: disable=no-member
         cls.__handlers__[event].add(func)
 
+    @classmethod
+    def remove_handler(cls, event, func):
+        '''Remove event handler from subject's class.
+
+        :param str event: event identificator
+        :param collections.Callable handler: handler callable
+        '''
+
+        # pylint: disable=no-member
+        cls.__handlers__[event].remove(func)
+
 
     def _fire_event_in_order(self, order, event, kwargs):
         '''Fire event for classes in given order.