Commit b7c53d53 authored by Anael Beutot's avatar Anael Beutot
Browse files

Refactored RPC callback handling in TagDB.

parent 10a3def7
Loading
Loading
Loading
Loading
+26 −18
Original line number Diff line number Diff line
@@ -159,6 +159,26 @@ def get_tags(tags_dict, tags=None):
    return result


def rpc_simple_cb(log_msg):
    """Log a message in case of error of the rpc call.

    It is a factory that is used in TagDB

    :param str log_msg: format logging message with 3 %s arguments
        (opaque, error class, error message)
    """
    def cb(self, call_id, response, error):
        opaque = self.async_calls.pop(call_id)
        if error:
            logger.error(log_msg, opaque, error['exception'],
                         error['message'])
            return

        logger.debug('Simple cb for %s succeed', opaque)

    return cb


class TagDB(object):
    """Tag database. FIXME comment

@@ -236,26 +256,14 @@ class TagDB(object):
    def rpc_unregister_sub_object(self, sub_id):
        self.rpc_call(sub_id, self.rpc_object_register_cb, 'unregister', sub_id)

    def rpc_object_register_cb(self, call_id, response, error):
        name = self.async_calls.pop(call_id)
        if error is not None:
            logger.error('Error while trying to register the object %s,'
                         ' %s("%s")', name, error['exception'],
                         error['message'])
            return

        logger.info('Successfully registered object %s', name)

    def rpc_object_unregister_cb(self, call_id, response, error):
        name = self.async_calls.pop(call_id)
        if error is not None:
            logger.error('Error while trying to unregister the object %s,'
                         ' %s("%s")', name, error['exception'],
                         error['message'])
            return
    #: this is a method
    rpc_object_register_cb = rpc_simple_cb(
        'Error while trying to register the object %s, %s("%s")')

        logger.info('Successfully unregistered object %s', name)
    rpc_object_unregister_cb = rpc_simple_cb(
        'Error while trying to unregister the object %s, %s("%s")')

    #def rpc_register_tag(self,
    def rpc_tag_register_cb(self, call_id, response, error):
        name = self.async_calls.pop(call_id)
        if error is not None: