Open main menu

CDOT Wiki β

Changes

Proxy

37 bytes removed, 19:13, 16 January 2007
no edit summary
===Code Samples===
<pre>
import Pyro.core, Pyro.naming, Pyro.constants
import Pyro.EventService.Server
from Pyro.errors import *
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.constantsconfig.PYRO_NS_HOSTNAME) daemon.useNameServer(self.NS) daemon.connect(self) # import will also set self.daemon... uri = self.NS.resolve(Pyro.EventServiceconstants.ServerEVENTSERVER_NAME) from self.eventservice=Pyro.errors import *core.getProxyForURI(uri) self.eventservice._setIdentification(ident) self.abortListen=0 self.daemon=daemon # make sure daemon doesn't get garbage collected now
# SUBSCRIBER: subscribes to certain events. class Subscriber(Pyro.core.CallbackObjBase): def __init__subscribe(self, ident=Nonesubjects): Pyro # Subscribe to one or more subjects. # It is safe to call this multiple times.core self.ObjBaseeventservice.__init__subscribe(subjects, self) Pyro.core.initServergetProxy()) Pyro.core.initClient def subscribeMatch(self,subjectPatterns): daemon = Pyro.core.Daemon # Subscribe to one or more subjects (by pattern) locator = Pyro # It is safe to call this multiple times.naming.NameServerLocator(identification=ident) self.NS = locatoreventservice.getNSsubscribeMatch(host=PyrosubjectPatterns, self.config.PYRO_NS_HOSTNAMEgetProxy()) daemon.useNameServer def unsubscribe(self.NS, subjects): daemon.connect # Unsubscribe the subscriber for the given subject(selfs) # will also set self.daemon... uri = self.NSeventservice.resolveunsubscribe(Pyro.constants.EVENTSERVER_NAME) subjects, self.eventservice=Pyro.core.getProxyForURIgetProxy(uri) self.eventservice._setIdentification(ident) self.abortListen=0 self.daemon=daemon # make sure daemon doesn't get garbage collected now
def subscribeabort(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())abortListen=1
def abortsetThreading(self, threaded): self.abortListengetDaemon().threaded=1threaded
def setThreadinglisten(self, threaded): self.getDaemon().threadedrequestLoop(lambda s=threadedself: not s.abortListen)
def listenevent(self, event): # callback, override this! self.getDaemon().requestLoop(lambda s=self: not s.abortListen) print event
# PUBLISHER: publishes events.class Publisher: def event__init__(self, eventident=None): # callback, override this! print event 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)
# 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)</pre>
1
edit