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/connection.c | |
parent | d25151483fe0143354dc188e888a0f2d740df2da (diff) |
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/connection.c')
-rw-r--r-- | bus/connection.c | 58 |
1 files changed, 28 insertions, 30 deletions
diff --git a/bus/connection.c b/bus/connection.c index 512a2311..ed1b1391 100644 --- a/bus/connection.c +++ b/bus/connection.c @@ -1467,9 +1467,9 @@ bus_pending_reply_expired (BusExpireList *list, bus_transaction_cancel_and_free (transaction); return FALSE; } - - _dbus_list_remove_link (&connections->pending_replies->items, - link); + + bus_expire_list_remove_link (connections->pending_replies, link); + bus_pending_reply_free (pending); bus_transaction_execute_and_free (transaction); @@ -1488,14 +1488,14 @@ bus_connection_drop_pending_replies (BusConnections *connections, _dbus_verbose ("Dropping pending replies that involve connection %p\n", connection); - link = _dbus_list_get_first_link (&connections->pending_replies->items); + link = bus_expire_list_get_first_link (connections->pending_replies); while (link != NULL) { DBusList *next; BusPendingReply *pending; - next = _dbus_list_get_next_link (&connections->pending_replies->items, - link); + next = bus_expire_list_get_next_link (connections->pending_replies, + link); pending = link->data; if (pending->will_get_reply == connection) @@ -1508,8 +1508,8 @@ bus_connection_drop_pending_replies (BusConnections *connections, pending->will_get_reply, pending->reply_serial); - _dbus_list_remove_link (&connections->pending_replies->items, - link); + bus_expire_list_remove_link (connections->pending_replies, + link); bus_pending_reply_free (pending); } else if (pending->will_send_reply == connection) @@ -1527,8 +1527,7 @@ bus_connection_drop_pending_replies (BusConnections *connections, pending->expire_item.added_tv_sec = 0; pending->expire_item.added_tv_usec = 0; - bus_expire_timeout_set_interval (connections->pending_replies->timeout, - 0); + bus_expire_list_recheck_immediately (connections->pending_replies); } link = next; @@ -1549,8 +1548,8 @@ cancel_pending_reply (void *data) _dbus_verbose ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d); - if (!_dbus_list_remove (&d->connections->pending_replies->items, - d->pending)) + if (!bus_expire_list_remove (d->connections->pending_replies, + &d->pending->expire_item)) _dbus_assert_not_reached ("pending reply did not exist to be cancelled"); bus_pending_reply_free (d->pending); /* since it's been cancelled */ @@ -1597,7 +1596,7 @@ bus_connections_expect_reply (BusConnections *connections, reply_serial = dbus_message_get_serial (reply_to_this); - link = _dbus_list_get_first_link (&connections->pending_replies->items); + link = bus_expire_list_get_first_link (connections->pending_replies); count = 0; while (link != NULL) { @@ -1612,8 +1611,8 @@ bus_connections_expect_reply (BusConnections *connections, return FALSE; } - link = _dbus_list_get_next_link (&connections->pending_replies->items, - link); + link = bus_expire_list_get_next_link (connections->pending_replies, + link); if (pending->will_get_reply == will_get_reply) ++count; } @@ -1651,8 +1650,8 @@ bus_connections_expect_reply (BusConnections *connections, return FALSE; } - if (!_dbus_list_prepend (&connections->pending_replies->items, - pending)) + if (!bus_expire_list_add (connections->pending_replies, + &pending->expire_item)) { BUS_SET_OOM (error); dbus_free (cprd); @@ -1666,7 +1665,7 @@ bus_connections_expect_reply (BusConnections *connections, cancel_pending_reply_data_free)) { BUS_SET_OOM (error); - _dbus_list_remove (&connections->pending_replies->items, pending); + bus_expire_list_remove (connections->pending_replies, &pending->expire_item); dbus_free (cprd); bus_pending_reply_free (pending); return FALSE; @@ -1699,9 +1698,9 @@ cancel_check_pending_reply (void *data) CheckPendingReplyData *d = data; _dbus_verbose ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d); - - _dbus_list_prepend_link (&d->connections->pending_replies->items, - d->link); + + bus_expire_list_add_link (d->connections->pending_replies, + d->link); d->link = NULL; } @@ -1716,8 +1715,8 @@ check_pending_reply_data_free (void *data) { BusPendingReply *pending = d->link->data; - _dbus_assert (_dbus_list_find_last (&d->connections->pending_replies->items, - pending) == NULL); + _dbus_assert (!bus_expire_list_contains_item (d->connections->pending_replies, + &pending->expire_item)); bus_pending_reply_free (pending); _dbus_list_free_link (d->link); @@ -1747,7 +1746,7 @@ bus_connections_check_reply (BusConnections *connections, reply_serial = dbus_message_get_reply_serial (reply); - link = _dbus_list_get_first_link (&connections->pending_replies->items); + link = bus_expire_list_get_first_link (connections->pending_replies); while (link != NULL) { BusPendingReply *pending = link->data; @@ -1760,8 +1759,8 @@ bus_connections_check_reply (BusConnections *connections, break; } - link = _dbus_list_get_next_link (&connections->pending_replies->items, - link); + link = bus_expire_list_get_next_link (connections->pending_replies, + link); } if (link == NULL) @@ -1791,11 +1790,10 @@ bus_connections_check_reply (BusConnections *connections, cprd->link = link; cprd->connections = connections; - _dbus_list_unlink (&connections->pending_replies->items, - link); + bus_expire_list_unlink (connections->pending_replies, + link); - _dbus_assert (_dbus_list_find_last (&connections->pending_replies->items, - link->data) == NULL); + _dbus_assert (!bus_expire_list_contains_item (connections->pending_replies, link->data)); return TRUE; } |