blob: 7578b09e1c6b133c19b0ea4a84f790fa78d33cc3 (
plain) (
tree)
|
|
class Publisher(object):
def __init__(self):
self.subscribers = []
def subscribe(self, who):
if who not in self.subscribers:
self.subscribers.append(who)
def unsubscribe(self, who):
if who in self.subscribers:
self.subscribers.remove(who)
def request_all(self, message, *args):
method = "request_" + message
ret = []
for subscriber in self.subscribers:
if hasattr(subscriber, method):
ret.append(getattr(subscriber, method)(*args))
return ret
def request_one(self, message, *args):
method = "request_" + message
for subscriber in self.subscribers:
if hasattr(subscriber, method):
return getattr(subscriber, method)(*args)
def notify(self, message, *args):
method = "msg_" + message
for subscriber in self.subscribers:
if hasattr(subscriber, method):
getattr(subscriber, method)(*args)
|