Top | ![]() |
![]() |
![]() |
![]() |
|
(*CamelCopyFunc) () |
CamelObjectBag * | camel_object_bag_new () |
|
camel_object_bag_get () |
|
camel_object_bag_peek () |
|
camel_object_bag_reserve () |
|
camel_object_bag_add () |
|
camel_object_bag_abort () |
|
camel_object_bag_rekey () |
|
camel_object_bag_list () |
|
camel_object_bag_remove () |
|
camel_object_bag_destroy () |
CamelObjectBag * camel_object_bag_new (,
GHashFunc key_hash_func,
GEqualFunc key_equal_funcCamelCopyFunc key_copy_func
,);
GFreeFunc key_free_func
Returns a new object bag. Object bags are keyed hash tables of objects
that can be updated atomically using transaction semantics. Use
camel_object_bag_destroy()
to free the object bag.
[skip]
gpointer camel_object_bag_get (CamelObjectBag *bag
,);
gconstpointer key
Lookup an object by key
. If the key is currently reserved, the function
will block until another thread commits or aborts the reservation. The
caller owns the reference to the returned object. Use g_object_unref()
gpointer camel_object_bag_peek (CamelObjectBag *bag
,);
gconstpointer key
Returns the object for key
in bag
, ignoring any reservations. If it
isn't committed, then it isn't considered. This should only be used
where reliable transactional-based state is not required.
Unlink other "peek" operations, the caller owns the returned object
reference. Use g_object_unref()
gpointer camel_object_bag_reserve (CamelObjectBag *bag
,);
gconstpointer key
Reserves key
in bag
. If key
is already reserved in another thread,
then wait until the reservation has been committed.
After reserving key
, you either get a reference to the object
corresponding to key
(similar to camel_object_bag_get()
) or you get
NULL
camel_object_bag_add()
or
camel_object_bag_abort()
.
void camel_object_bag_add (CamelObjectBag *bag
,,
gconstpointer key);
gpointer object
Adds object
to bag
. The key
MUST have been previously reserved using
camel_object_bag_reserve()
.
void camel_object_bag_abort (CamelObjectBag *bag
,);
gconstpointer key
Aborts a key reservation.
void camel_object_bag_rekey (CamelObjectBag *bag
,,
gpointer object);
gconstpointer new_key
Changes the key for object
to new_key
, atomically.
It is considered a programming error if object
is not found in bag
.
In such case the function will emit a terminal warning and return.
GPtrArray * camel_object_bag_list (CamelObjectBag *bag
);
Returns a
g_ptr_array_foreach (array, (GFunc) g_object_unref, NULL); g_ptr_array_free (array, TRUE);
void camel_object_bag_remove (CamelObjectBag *bag
,);
gpointer object
Removes object
from bag
.
void camel_object_bag_destroy (CamelObjectBag *bag
);
Frees bag
. As a precaution, the function will emit a warning to standard
error and return without freeing bag
if bag
still has reserved keys.