good for commit On Tue, 2010-03-30 at 13:31 +1100, Angus Salkeld wrote: > 1) don't send notifications if the key is the same. > 2) Add key value change notifications to key_inc & key_dec > > Signed-off-by: Angus Salkeld <[email protected]> > --- > exec/objdb.c | 21 ++++++++++++++++++--- > 1 files changed, 18 insertions(+), 3 deletions(-) > > diff --git a/exec/objdb.c b/exec/objdb.c > index f8b12e4..e26ff14 100644 > --- a/exec/objdb.c > +++ b/exec/objdb.c > @@ -1087,6 +1087,10 @@ static int object_key_increment ( > } > > hdb_handle_put (&object_instance_database, object_handle); > + if (res == 0) { > + object_key_changed_notification (object_handle, key_name, > key_len, > + object_key->value, object_key->value_len, > OBJECT_KEY_REPLACED); > + } > objdb_rdunlock(); > return (res); > > @@ -1170,6 +1174,10 @@ static int object_key_decrement ( > } > > hdb_handle_put (&object_instance_database, object_handle); > + if (res == 0) { > + object_key_changed_notification (object_handle, key_name, > key_len, > + object_key->value, object_key->value_len, > OBJECT_KEY_REPLACED); > + } > objdb_rdunlock(); > return (res); > > @@ -1244,6 +1252,7 @@ static int object_key_replace ( > struct object_key *object_key = NULL; > struct list_head *list; > int found = 0; > + int value_changed = 0; > > objdb_rdlock(); > > @@ -1308,8 +1317,14 @@ static int object_key_replace ( > free(object_key->value); > object_key->value = replacement_value; > } > - memcpy(object_key->value, new_value, new_value_len); > - object_key->value_len = new_value_len; > + if (memcmp (object_key->value, new_value, new_value_len) == 0) { > + value_changed = 0; > + } > + else { > + memcpy(object_key->value, new_value, new_value_len); > + object_key->value_len = new_value_len; > + value_changed = 1; > + } > } > else { > ret = -1; > @@ -1317,7 +1332,7 @@ static int object_key_replace ( > } > > hdb_handle_put (&object_instance_database, object_handle); > - if (ret == 0) { > + if (ret == 0 && value_changed) { > object_key_changed_notification (object_handle, key_name, > key_len, > new_value, new_value_len, OBJECT_KEY_REPLACED); > }
_______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
