RRWaiter

Name

RRWaiter -- a simple synchronization helper.

Synopsis



struct      RRWaiter;
RRWaiter*   rr_waiter_new                   (void);
void        rr_waiter_free                  (RRWaiter *waiter);
void        rr_waiter_set_done              (RRWaiter *waiter,
                                             GError *error);
gboolean    rr_waiter_wait                  (RRWaiter *waiter,
                                             GError **error);
void        rr_waiter_set_user_data         (RRWaiter *waiter,
                                             gpointer user_data);
gpointer    rr_waiter_get_user_data         (RRWaiter *waiter);

Description

RRWaiter can be used for thread synchronization..
RRWaiter *waiter = rr_waiter_new();

/* wait for some other thread to deliver the result */
if (rr_waiter_wait (waiter, error) == FALSE) {
    g_error ("operation failed: s\n", error->message);
}

g_print ("result: s\n", rr_waiter_get_user_data (waiter));

-----------------------------------------------------------
|                  in some other thread                   |
-----------------------------------------------------------

/* if the operation was successful:
 * store eventual result in the waiter object and.
 * signal that the result is available...
 */
rr_waiter_set_user_data (waiter, "foo");
rr_waiter_set_done (waiter, NULL);

/* or if the operation failed:
 * Store an error message in "error"
 * and signal a failure 
 */
rr_waiter_set_done (waiter, error);

Details

struct RRWaiter

struct RRWaiter;


rr_waiter_new ()

RRWaiter*   rr_waiter_new                   (void);

Creates a new RRWaiter instance.

Returns :

a new RRWaiter instance.


rr_waiter_free ()

void        rr_waiter_free                  (RRWaiter *waiter);

free the resources allocated by waiter.

waiter :

a RRWaiter instance


rr_waiter_set_done ()

void        rr_waiter_set_done              (RRWaiter *waiter,
                                             GError *error);

Ublock all waiting threads.

waiter :

a RRWaiter instance

error :

an error message or NULL


rr_waiter_wait ()

gboolean    rr_waiter_wait                  (RRWaiter *waiter,
                                             GError **error);

block until some other thread unlocks with a rr_waiter_set_done call.

waiter :

a RRWaiter instance

error :

a location to store eventual error messages.

Returns :

TRUE if the "error" argument to rr_waiter_set_done is NULL.


rr_waiter_set_user_data ()

void        rr_waiter_set_user_data         (RRWaiter *waiter,
                                             gpointer user_data);

store user_data within the RRWaiter instance.

waiter :

a RRWaiter instance

user_data :

custom user data


rr_waiter_get_user_data ()

gpointer    rr_waiter_get_user_data         (RRWaiter *waiter);

Retrieve the user data stored within the RRWaiter instance

waiter :

a RRWaiter instance

Returns :

user data