Example #1
0
 def __init__(self, processor, handler, address=None):
     super(ThriftAMQService, self).__init__()
     
     self.processor = processor
     self.handler = IAMQServiceHandler(handler)
     self.address = address or handler.address
     
     self.setName("{0} over AMQP".format(self.handler.address))
Example #2
0
class ThriftAMQService(service.Service, object):
    def __init__(self, processor, handler, address=None):
        super(ThriftAMQService, self).__init__()
        
        self.processor = processor
        self.handler = IAMQServiceHandler(handler)
        self.address = address or handler.address
        
        self.setName("{0} over AMQP".format(self.handler.address))
    
    @defer.inlineCallbacks
    def server(self, address, processor, handler, queues=None):
        server = yield self.parent.server_factory.build_server(self,
                processor, handler, address, queues)
        # @todo: Make a new IService instance and add it to the parent as a
        #        child of me.
        defer.returnValue(server)
    
    @defer.inlineCallbacks
    def startService(self):
        self.client = self.parent.client_factory.build_client
        
        yield self.server(self.address, self.processor, self.handler)
        super(ThriftAMQService, self).startService()
        
        log.info("ThriftAMQService started, notifying handler")
        self.handler.amq_start(self)
    
    @defer.inlineCallbacks
    def stopService(self):
        log.info("ThriftAMQService stopping, notifying handler")
        yield self.handler.amq_stop()
        log.info("ThriftAMQService handler shutdown process terminated, stopping service")
        super(ThriftAMQService, self).stopService()
    
    def processing_error(self, failure):
        log.error("An error occurred while processing a message!")
        log.error(failure)
    
    def queue_closed(self, failure):
        pass
    
    def queue_error(self, failure):
        log.error("Queue error!")
        log.error(failure)