diff options
author | Havoc Pennington <hp@pobox.com> | 2007-11-08 17:51:15 -0500 |
---|---|---|
committer | John (J5) Palmieri <johnp@redhat.com> | 2008-03-04 14:21:42 -0500 |
commit | a37404111be4912cd8b51080bcbe219edded35f5 (patch) | |
tree | b8a804dfd0911a9727661f6c6e0e21b4e3d4b846 /bus/expirelist.h | |
parent | d25151483fe0143354dc188e888a0f2d740df2da (diff) | |
download | dbus-a37404111be4912cd8b51080bcbe219edded35f5.tar.gz |
Make BusExpireList an opaque data type
2007-11-08 Havoc Pennington <hp@redhat.com>
* bus/connection.c, bus/expirelist.c: Make the BusExpireList
struct opaque, adding accessors for manipulating the list. In this
commit there should be no change in functionality or behavior. The
purpose of this change is to improve encapsulation prior to fixing
some bugs Kimmo Hämäläinen found where the timeout is not properly
updated, since we need to e.g. take some action whenever adding
and removing stuff from the expire list.
Diffstat (limited to 'bus/expirelist.h')
-rw-r--r-- | bus/expirelist.h | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/bus/expirelist.h b/bus/expirelist.h index 221b9ae9..af0a0729 100644 --- a/bus/expirelist.h +++ b/bus/expirelist.h @@ -35,15 +35,6 @@ typedef dbus_bool_t (* BusExpireFunc) (BusExpireList *list, DBusList *link, void *data); -struct BusExpireList -{ - DBusList *items; /**< List of BusExpireItem */ - DBusTimeout *timeout; - DBusLoop *loop; - BusExpireFunc expire_func; - void *data; - int expire_after; /**< Expire after milliseconds (thousandths) */ -}; /* embed this in a child expire item struct */ struct BusExpireItem @@ -52,18 +43,38 @@ struct BusExpireItem long added_tv_usec; /**< Time we were added (microsec component) */ }; -BusExpireList* bus_expire_list_new (DBusLoop *loop, - int expire_after, - BusExpireFunc expire_func, - void *data); -void bus_expire_list_free (BusExpireList *list); +BusExpireList* bus_expire_list_new (DBusLoop *loop, + int expire_after, + BusExpireFunc expire_func, + void *data); +void bus_expire_list_free (BusExpireList *list); +void bus_expire_list_recheck_immediately (BusExpireList *list); +void bus_expire_list_remove_link (BusExpireList *list, + DBusList *link); +dbus_bool_t bus_expire_list_remove (BusExpireList *list, + BusExpireItem *item); +DBusList* bus_expire_list_get_first_link (BusExpireList *list); +DBusList* bus_expire_list_get_next_link (BusExpireList *list, + DBusList *link); +dbus_bool_t bus_expire_list_add (BusExpireList *list, + BusExpireItem *item); +void bus_expire_list_add_link (BusExpireList *list, + DBusList *link); +dbus_bool_t bus_expire_list_contains_item (BusExpireList *list, + BusExpireItem *item); +void bus_expire_list_unlink (BusExpireList *list, + DBusList *link); + +/* this macro and function are semi-related utility functions, not really part of the + * BusExpireList API + */ #define ELAPSED_MILLISECONDS_SINCE(orig_tv_sec, orig_tv_usec, \ now_tv_sec, now_tv_usec) \ (((double) (now_tv_sec) - (double) (orig_tv_sec)) * 1000.0 + \ ((double) (now_tv_usec) - (double) (orig_tv_usec)) / 1000.0) -void bus_expire_timeout_set_interval (DBusTimeout *timeout, - int next_interval); +void bus_expire_timeout_set_interval (DBusTimeout *timeout, + int next_interval); #endif /* BUS_EXPIRE_LIST_H */ |