Lines Matching refs:connections

2 /* connection.c  Client connections
56 DBusList *completed; /**< List of all completed connections */
58 DBusList *incomplete; /**< List of all not-yet-active connections */
61 DBusHashTable *completed_by_user; /**< Number of completed connections for each UID */
62 DBusTimeout *expire_timeout; /**< Timeout for expiring incomplete connections. */
71 BusConnections *connections;
89 int stamp; /**< connections->stamp last time we were traversed */
96 static void bus_connection_drop_pending_replies (BusConnections *connections,
110 return bus_context_get_loop (d->connections->context);
115 get_connections_for_uid (BusConnections *connections,
123 val = _dbus_hash_table_lookup_uintptr (connections->completed_by_user,
132 adjust_connections_for_uid (BusConnections *connections,
138 current_count = get_connections_for_uid (connections, uid);
152 _dbus_hash_table_remove_uintptr (connections->completed_by_user, uid);
159 retval = _dbus_hash_table_insert_uintptr (connections->completed_by_user,
188 matchmaker = bus_context_get_matchmaker (d->connections->context);
208 while ((transaction = bus_transaction_new (d->connections->context)) == NULL)
265 _dbus_list_remove_link (&d->connections->completed, d->link_in_connection_list);
267 d->connections->n_completed -= 1;
271 if (!adjust_connections_for_uid (d->connections,
278 _dbus_list_remove_link (&d->connections->incomplete, d->link_in_connection_list);
280 d->connections->n_incomplete -= 1;
283 _dbus_assert (d->connections->n_incomplete >= 0);
284 _dbus_assert (d->connections->n_completed >= 0);
287 bus_connection_drop_pending_replies (d->connections, connection);
389 return bus_context_allow_unix_user (d->connections->context, uid);
433 BusConnections *connections;
438 connections = dbus_new0 (BusConnections, 1);
439 if (connections == NULL)
442 connections->completed_by_user = _dbus_hash_table_new (DBUS_HASH_UINTPTR,
444 if (connections->completed_by_user == NULL)
447 connections->expire_timeout = _dbus_timeout_new (100, /* irrelevant */
449 connections, NULL);
450 if (connections->expire_timeout == NULL)
453 _dbus_timeout_set_enabled (connections->expire_timeout, FALSE);
455 connections->pending_replies = bus_expire_list_new (bus_context_get_loop (context),
458 connections);
459 if (connections->pending_replies == NULL)
463 connections->expire_timeout,
467 connections->refcount = 1;
468 connections->context = context;
470 return connections;
473 bus_expire_list_free (connections->pending_replies);
475 _dbus_timeout_unref (connections->expire_timeout);
477 _dbus_hash_table_unref (connections->completed_by_user);
479 dbus_free (connections);
487 bus_connections_ref (BusConnections *connections)
489 _dbus_assert (connections->refcount > 0);
490 connections->refcount += 1;
492 return connections;
496 bus_connections_unref (BusConnections *connections)
498 _dbus_assert (connections->refcount > 0);
499 connections->refcount -= 1;
500 if (connections->refcount == 0)
503 while (connections->incomplete != NULL)
507 connection = connections->incomplete->data;
515 _dbus_assert (connections->n_incomplete == 0);
517 /* drop all real connections */
518 while (connections->completed != NULL)
522 connection = connections->completed->data;
530 _dbus_assert (connections->n_completed == 0);
532 bus_expire_list_free (connections->pending_replies);
534 _dbus_loop_remove_timeout (bus_context_get_loop (connections->context),
535 connections->expire_timeout,
538 _dbus_timeout_unref (connections->expire_timeout);
540 _dbus_hash_table_unref (connections->completed_by_user);
542 dbus_free (connections);
606 bus_connections_setup_connection (BusConnections *connections,
620 d->connections = connections;
680 bus_context_get_loop (connections->context),
693 if (!_dbus_loop_queue_dispatch (bus_context_get_loop (connections->context), connection))
700 _dbus_list_append_link (&connections->incomplete, d->link_in_connection_list);
701 connections->n_incomplete += 1;
707 * expired connections if possible, and to queue the timeout for our
710 bus_connections_expire_incomplete (connections);
715 if (connections->n_incomplete >
716 bus_context_get_max_incomplete_connections (connections->context))
718 _dbus_verbose ("Number of incomplete connections exceeds max, dropping oldest one\n");
720 _dbus_assert (connections->incomplete != NULL);
724 * connections quickly enough, they can keep anyone else from
728 dbus_connection_close (connections->incomplete->data);
781 bus_connections_expire_incomplete (BusConnections *connections)
787 if (connections->incomplete != NULL)
794 auth_timeout = bus_context_get_auth_timeout (connections->context);
796 link = _dbus_list_get_first_link (&connections->incomplete);
799 DBusList *next = _dbus_list_get_next_link (&connections->incomplete, link);
821 /* We can end the loop, since the connections are in oldest-first order */
833 bus_expire_timeout_set_interval (connections->expire_timeout,
840 BusConnections *connections = data;
845 bus_connections_expire_incomplete (connections);
938 foreach_active (BusConnections *connections,
944 link = _dbus_list_get_first_link (&connections->completed);
948 DBusList *next = _dbus_list_get_next_link (&connections->completed, link);
960 foreach_inactive (BusConnections *connections,
966 link = _dbus_list_get_first_link (&connections->incomplete);
970 DBusList *next = _dbus_list_get_next_link (&connections->incomplete, link);
983 * #FALSE, stops iterating. Active connections are authenticated
986 * @param connections the connections object
991 bus_connections_foreach_active (BusConnections *connections,
995 foreach_active (connections, function, data);
1002 * @param connections the connections object
1007 bus_connections_foreach (BusConnections *connections,
1011 if (!foreach_active (connections, function, data))
1014 foreach_inactive (connections, function, data);
1018 bus_connections_get_context (BusConnections *connections)
1020 return connections->context;
1025 * traversing connections. Note that it assumes we will
1031 bus_connections_increment_stamp (BusConnections *connections)
1033 connections->stamp += 1;
1048 if (d->stamp == d->connections->stamp)
1052 d->stamp = d->connections->stamp;
1066 return d->connections->context;
1078 return d->connections;
1090 return bus_context_get_registry (d->connections->context);
1102 return bus_context_get_activation (d->connections->context);
1114 return bus_context_get_matchmaker (d->connections->context);
1361 d->policy = bus_context_create_client_policy (d->connections->context,
1382 if (!adjust_connections_for_uid (d->connections,
1394 _dbus_list_unlink (&d->connections->incomplete,
1396 d->connections->n_incomplete -= 1;
1397 _dbus_list_append_link (&d->connections->completed,
1399 d->connections->n_completed += 1;
1401 _dbus_assert (d->connections->n_incomplete >= 0);
1402 _dbus_assert (d->connections->n_completed > 0);
1405 bus_connections_expire_incomplete (d->connections);
1436 bus_connections_check_limits (BusConnections *connections,
1448 if (connections->n_completed >=
1449 bus_context_get_max_completed_connections (connections->context))
1452 "The maximum number of active connections has been reached");
1458 if (get_connections_for_uid (connections, uid) >=
1459 bus_context_get_max_connections_per_user (connections->context))
1462 "The maximum number of active connections for UID %lu has been reached",
1484 bus_pending_reply_send_no_reply (BusConnections *connections,
1531 BusConnections *connections = data;
1545 transaction = bus_transaction_new (connections->context);
1549 if (!bus_pending_reply_send_no_reply (connections,
1557 bus_expire_list_remove_link (connections->pending_replies, link);
1566 bus_connection_drop_pending_replies (BusConnections *connections,
1577 link = bus_expire_list_get_first_link (connections->pending_replies);
1583 next = bus_expire_list_get_next_link (connections->pending_replies,
1597 bus_expire_list_remove_link (connections->pending_replies,
1616 bus_expire_list_recheck_immediately (connections->pending_replies);
1627 BusConnections *connections;
1637 if (!bus_expire_list_remove (d->connections->pending_replies,
1663 bus_connections_expect_reply (BusConnections *connections,
1685 link = bus_expire_list_get_first_link (connections->pending_replies);
1700 link = bus_expire_list_get_next_link (connections->pending_replies,
1707 bus_context_get_max_replies_per_connection (connections->context))
1739 if (!bus_expire_list_add (connections->pending_replies,
1754 bus_expire_list_remove (connections->pending_replies, &pending->expire_item);
1761 cprd->connections = connections;
1778 BusConnections *connections;
1788 bus_expire_list_add_link (d->connections->pending_replies,
1804 _dbus_assert (!bus_expire_list_contains_item (d->connections->pending_replies,
1819 bus_connections_check_reply (BusConnections *connections,
1835 link = bus_expire_list_get_first_link (connections->pending_replies);
1848 link = bus_expire_list_get_next_link (connections->pending_replies,
1877 cprd->connections = connections;
1879 bus_expire_list_unlink (connections->pending_replies,
1882 _dbus_assert (!bus_expire_list_contains_item (connections->pending_replies, link->data));
1910 DBusList *connections;
2053 return TRUE; /* silently ignore disconnected connections */
2087 * then we should already be in transaction->connections
2105 if (!_dbus_list_prepend (&transaction->connections, connection))
2151 while ((connection = _dbus_list_pop_first (&transaction->connections)))
2154 _dbus_assert (transaction->connections == NULL);
2205 /* For each connection in transaction->connections
2212 while ((connection = _dbus_list_pop_first (&transaction->connections)))
2215 _dbus_assert (transaction->connections == NULL);
2234 _dbus_list_remove (&to_send->transaction->connections,