Completed
Push — master ( 6cf062...43f138 )
by Matthew
01:00
created

ed2d.EventQueue   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 20
Duplicated Lines 0 %
Metric Value
dl 0
loc 20
rs 10
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A broadcast_event() 0 4 2
A __init__() 0 2 1
A add_listener() 0 6 1
A remove_listener() 0 4 2
1
2
# TODO - Add support for event filters so we dont have to rebroadcast everything
3
# to listeners that wont use most of it.
4
5
class EventQueue(object):
6
    def __init__(self):
7
        self.listeners = []
8
9
    def add_listener(self, listener):
10
        '''
11
        Add an event processing listener.
12
        An event listener is just a function that accepts 2 arguments.
13
        '''
14
        self.listeners.append(listener)
15
16
    def remove_listener(self, listener):
17
        ''' Remove specified event listener '''
18
        if listener not in self.listeners:
19
            self.listener.remove()
20
21
    def broadcast_event(self, event, args):
22
        ''' Send out an event to all event listeners '''
23
        for listener in self.listeners:
24
            listener(event, args)
25
26
Events = EventQueue()
27