예제 #1
0
    def on_message(self, channel, method, header, body):
        event = self.message_parser.parse(body)
        if not self.message_parser.validate_token(event.token):
            logging.error('Token Error')
            msg = XmlResponseGenerator(event.id, "Token not valid!")
            self.response_message(channel, method, header, msg.to_xml())
            return

        request = Request(event, self)
        service = self.service_bus.lookup_message_service_thread(event.category, event.service)

        if service is None:
            error_msg = 'Cannot Find Message Service: %s.%s' % (event.category, event.service)
            logging.error(error_msg)
            msg = XmlResponseGenerator(event.id, error_msg)
            self.response_message(channel, method, header, msg.to_xml())
        else:
            logging.info("Call Message Service %s.%s" % (event.category, event.service))
            service.on_message(request)
예제 #2
0
    def on_rpc(self, channel, method, header, body):
        event = self.message_parser.parse(body)
        if not self.message_parser.validate_token(event.token):
            logging.error("Token Error")
            msg = XmlResponseGenerator(event.id, "Token not valid!")
            self.response_message(channel, method, header, msg.to_xml())
            return

        response = RPCResponse(event, channel, method, header, self)
        request = Request(event, self)
        service = self.service_bus.lookup_rpc_service(event.category, event.service)

        if service is None:
            error_msg = "Cannot Find RPC Service: %s.%s" % (event.category, event.service)
            logging.error(error_msg)
            msg = XmlResponseGenerator(event.id, error_msg)
            self.response_message(channel, method, header, msg.to_xml())
        else:
            if self.service_bus.is_background_service(service):
                logging.info("Call Background RPC Service %s.%s" % (event.category, event.service))
                self.__run_in_background(service.on_call, (request, response))
            else:
                logging.info("Call RPC Service %s.%s" % (event.category, event.service))
                self.__run_in_frontground(service.on_call, (request, response))
예제 #3
0
 def send(self, message):
     msg = XmlResponseGenerator(self.event.id, message)
     self.receiver.response_message(self.channel, self.method, self.header, msg.to_xml())