import Pyro.core import Pyro.util import Pyro.naming from RemoteObject import * import random from time import sleep # An Observer is an object that watches another object and reacts # whenever the Subject changes state. class Observer(RemoteObject): def __init__(self, subject_name): # choose a name and initialize the RemoteObject self.name = subject_name + '_observer%d' % random.randint(0, 1000000) RemoteObject.__init__(self, self.name) # register with the subject self.subject = get_remote_object(subject_name) self.subject.register(self.uri) print "I just registered." def notify(self): # when the subject is modified, it invokes notify state = self.subject.get_state() print 'Observer notified; new state =', state def main(script, subject_name='bob', *args): Observer(subject_name).requestLoop() if __name__ == '__main__': main(*sys.argv)