Statistics
| Branch: | Tag: | Revision:

root / src / listener.py @ 7fc7ca73

History | View | Annotate | Download (1.3 kB)

1
# Copyright 2009 Shikhar Bhushan
2
#
3
# Licensed under the Apache License, Version 2.0 (the "License");
4
# you may not use this file except in compliance with the License.
5
# You may obtain a copy of the License at
6
#
7
#    http://www.apache.org/licenses/LICENSE-2.0
8
#
9
# Unless required by applicable law or agreed to in writing, software
10
# distributed under the License is distributed on an "AS IS" BASIS,
11
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
# See the License for the specific language governing permissions and
13
# limitations under the License.
14

    
15
class Subject:
16
    
17
    def __init__(self, listeners=[]):
18
        self._listeners = listeners
19
        
20
    def has_listener(self, listener):
21
        return (listener in self._listeners)
22
    
23
    def add_listner(self, listener):
24
            self._listeners.append(listener)
25

    
26
    def remove_listener(self, listener):
27
        self._listeners.remove(listener)
28

    
29
    def dispatch(self, event, *args, **kwds):
30
        try:
31
            func = getattr(Listener, event)
32
            for l in listeners:
33
                func(l, data)
34
        except AttributeError:
35
            pass
36

    
37
class Listener:
38
    
39
    @override
40
    def reply(self, *args, **kwds):
41
        raise NotImplementedError
42
    
43
    @override
44
    def error(self, *args, **kwds):
45
        raise NotImplementedError