Exemple #1
0
    def remote_register_engine(self,
                               engine_reference,
                               id=None,
                               pid=None,
                               pproperties=None):
        # First adapt the engine_reference to a basic non-queued engine
        engine = IEngineBase(engine_reference)
        if pproperties:
            engine.properties = pickle.loads(pproperties)
        # Make it an IQueuedEngine before registration
        remote_engine = IEngineQueued(engine)
        # Get the ip/port of the remote side
        peer_address = engine_reference.tracker.broker.transport.getPeer()
        ip = peer_address.host
        port = peer_address.port
        reg_dict = self.service.register_engine(remote_engine, id, ip, port,
                                                pid)

        # Now setup callback for disconnect and unregistering the engine
        def notify(*args):
            return self.service.unregister_engine(reg_dict['id'])

        engine_reference.tracker.broker.notifyOnDisconnect(notify)

        engine.notifier = notify
        engine.stopNotifying = engine_reference.tracker.broker.dontNotifyOnDisconnect

        return reg_dict
Exemple #2
0
 def remote_register_engine(self, engine_reference, id=None, pid=None, pproperties=None):
     # First adapt the engine_reference to a basic non-queued engine
     engine = IEngineBase(engine_reference)
     if pproperties:
         engine.properties = pickle.loads(pproperties)
     # Make it an IQueuedEngine before registration
     remote_engine = IEngineQueued(engine)
     # Get the ip/port of the remote side
     peer_address = engine_reference.tracker.broker.transport.getPeer()
     ip = peer_address.host
     port = peer_address.port
     reg_dict = self.service.register_engine(remote_engine, id, ip, port, pid)
     # Now setup callback for disconnect and unregistering the engine
     def notify(*args):
         return self.service.unregister_engine(reg_dict['id'])
     engine_reference.tracker.broker.notifyOnDisconnect(notify)
     
     engine.notifier = notify
     engine.stopNotifying = engine_reference.tracker.broker.dontNotifyOnDisconnect
     
     return reg_dict
Exemple #3
0
 def __init__(self, service):
     assert IEngineBase.providedBy(service), \
         "IEngineBase is not provided by" + repr(service)
     self.service = service
     self.collectors = {}
Exemple #4
0
 def __init__(self, service):
     assert IEngineBase.providedBy(service), \
         "IEngineBase is not provided by" + repr(service)
     self.service = service
     self.collectors = {}