Updates global configuration settings with given values.

        First checks if given configuration values differ from current values.
        If any of the configuration values changed, generates a change event.
        Currently we generate change event for any configuration change.
        Note: This method is idempotent.

def update(self, **kwargs):
        """Updates global configuration settings with given values.

        First checks if given configuration values differ from current values.
        If any of the configuration values changed, generates a change event.
        Currently we generate change event for any configuration change.
        Note: This method is idempotent.
        """
        # Update inherited configurations
        super(CommonConf, self).update(**kwargs)
        conf_changed = False

        # Validate given configurations and check if value changed
        for conf_name, conf_value in kwargs.items():
            rtconf.base.get_validator(conf_name)(conf_value)
            item1 = self._settings.get(conf_name, None)
            item2 = kwargs.get(conf_name, None)

            if item1 != item2:
                conf_changed = True

        # If any configuration changed, we update configuration value and
        # notify listeners
        if conf_changed:
            for conf_name, conf_value in kwargs.items():
                # Since all new values are already validated, we can use them
                self._settings[conf_name] = conf_value

            self._notify_listeners(CommonConf.CONF_CHANGED_EVT, self)