Open main menu

CDOT Wiki β

Changes

Proxy

49 bytes added, 19:09, 16 January 2007
no edit summary
===Code Samples===
import Pyro.core, Pyro.naming, Pyro.constants import Pyro.EventService.Server from Pyro.errors import *
# SUBSCRIBER: subscribes to certain events. class Subscriber(Pyro.core.CallbackObjBase): def __init__(self, ident=None): Pyro.core.ObjBase.__init__(self) Pyro.core.initServer() Pyro.core.initClient() daemon = Pyro.core.Daemon() locator = Pyro.naming.NameServerLocator(identification=ident) self.NS = locator.getNS(host=Pyro.config.PYRO_NS_HOSTNAME) daemon.useNameServer(self.NS) daemon.connect(self) # will also set self.daemon... uri = self.NS.resolve(Pyro.constants.EVENTSERVER_NAME) self.eventservice=Pyro.core.getProxyForURI(uri) self.eventservice._setIdentification(ident) self.abortListen=0 self.daemon=daemon # make sure daemon doesn't get garbage collected now
def subscribe(self,subjects): # Subscribe to one or more subjects. # It is safe to call this multiple times. self.eventservice.subscribe(subjects, self.getProxy()) def subscribeMatch(self,subjectPatterns): # Subscribe to one or more subjects (by pattern) # It is safe to call this multiple times. self.eventservice.subscribeMatch(subjectPatterns, self.getProxy()) def unsubscribe(self, subjects): # Unsubscribe the subscriber for the given subject(s). self.eventservice.unsubscribe(subjects, self.getProxy())
def abort(self): self.abortListen=1
def setThreading(self, threaded): self.getDaemon().threaded=threaded
def listen(self): self.getDaemon().requestLoop(lambda s=self: not s.abortListen)
def event(self, event): # callback, override this! print event
# PUBLISHER: publishes events. class Publisher: def __init__(self, ident=None): Pyro.core.initClient() locator = Pyro.naming.NameServerLocator(identification=ident) ns = locator.getNS(host=Pyro.config.PYRO_NS_HOSTNAME) uri = ns.resolve(Pyro.constants.EVENTSERVER_NAME) self.eventservice=Pyro.core.getProxyForURI(uri) self.eventservice._setIdentification(ident)
def publish(self, subjects, msg): self.eventservice.publish(subjects,msg)
1
edit