Statistics
| Branch: | Tag: | Revision:

root / src / listener.py @ 7fc7ca73

History | View | Annotate | Download (1.3 kB)

1 7fc7ca73 Shikhar Bhushan
# Copyright 2009 Shikhar Bhushan
2 7fc7ca73 Shikhar Bhushan
#
3 7fc7ca73 Shikhar Bhushan
# Licensed under the Apache License, Version 2.0 (the "License");
4 7fc7ca73 Shikhar Bhushan
# you may not use this file except in compliance with the License.
5 7fc7ca73 Shikhar Bhushan
# You may obtain a copy of the License at
6 7fc7ca73 Shikhar Bhushan
#
7 7fc7ca73 Shikhar Bhushan
#    http://www.apache.org/licenses/LICENSE-2.0
8 7fc7ca73 Shikhar Bhushan
#
9 7fc7ca73 Shikhar Bhushan
# Unless required by applicable law or agreed to in writing, software
10 7fc7ca73 Shikhar Bhushan
# distributed under the License is distributed on an "AS IS" BASIS,
11 7fc7ca73 Shikhar Bhushan
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 7fc7ca73 Shikhar Bhushan
# See the License for the specific language governing permissions and
13 7fc7ca73 Shikhar Bhushan
# limitations under the License.
14 7fc7ca73 Shikhar Bhushan
15 7fc7ca73 Shikhar Bhushan
class Subject:
16 7fc7ca73 Shikhar Bhushan
    
17 7fc7ca73 Shikhar Bhushan
    def __init__(self, listeners=[]):
18 7fc7ca73 Shikhar Bhushan
        self._listeners = listeners
19 7fc7ca73 Shikhar Bhushan
        
20 7fc7ca73 Shikhar Bhushan
    def has_listener(self, listener):
21 7fc7ca73 Shikhar Bhushan
        return (listener in self._listeners)
22 7fc7ca73 Shikhar Bhushan
    
23 7fc7ca73 Shikhar Bhushan
    def add_listner(self, listener):
24 7fc7ca73 Shikhar Bhushan
            self._listeners.append(listener)
25 7fc7ca73 Shikhar Bhushan
26 7fc7ca73 Shikhar Bhushan
    def remove_listener(self, listener):
27 7fc7ca73 Shikhar Bhushan
        self._listeners.remove(listener)
28 7fc7ca73 Shikhar Bhushan
29 7fc7ca73 Shikhar Bhushan
    def dispatch(self, event, *args, **kwds):
30 7fc7ca73 Shikhar Bhushan
        try:
31 7fc7ca73 Shikhar Bhushan
            func = getattr(Listener, event)
32 7fc7ca73 Shikhar Bhushan
            for l in listeners:
33 7fc7ca73 Shikhar Bhushan
                func(l, data)
34 7fc7ca73 Shikhar Bhushan
        except AttributeError:
35 7fc7ca73 Shikhar Bhushan
            pass
36 7fc7ca73 Shikhar Bhushan
37 7fc7ca73 Shikhar Bhushan
class Listener:
38 7fc7ca73 Shikhar Bhushan
    
39 7fc7ca73 Shikhar Bhushan
    @override
40 7fc7ca73 Shikhar Bhushan
    def reply(self, *args, **kwds):
41 7fc7ca73 Shikhar Bhushan
        raise NotImplementedError
42 7fc7ca73 Shikhar Bhushan
    
43 7fc7ca73 Shikhar Bhushan
    @override
44 7fc7ca73 Shikhar Bhushan
    def error(self, *args, **kwds):
45 7fc7ca73 Shikhar Bhushan
        raise NotImplementedError