Emeric Vigier | 2f62582 | 2012-08-06 11:09:52 -0400 | [diff] [blame] | 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ |
| 2 | /* connection.h Client connections |
| 3 | * |
| 4 | * Copyright (C) 2003, 2004 Red Hat, Inc. |
| 5 | * |
| 6 | * Licensed under the Academic Free License version 2.1 |
| 7 | * |
| 8 | * This program is free software; you can redistribute it and/or modify |
| 9 | * it under the terms of the GNU General Public License as published by |
| 10 | * the Free Software Foundation; either version 2 of the License, or |
| 11 | * (at your option) any later version. |
| 12 | * |
| 13 | * This program is distributed in the hope that it will be useful, |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 16 | * GNU General Public License for more details. |
| 17 | * |
| 18 | * You should have received a copy of the GNU General Public License |
| 19 | * along with this program; if not, write to the Free Software |
| 20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 21 | * |
| 22 | */ |
| 23 | |
| 24 | #ifndef BUS_CONNECTION_H |
| 25 | #define BUS_CONNECTION_H |
| 26 | |
| 27 | #include <dbus/dbus.h> |
| 28 | #include <dbus/dbus-list.h> |
| 29 | #include "bus.h" |
| 30 | |
| 31 | typedef dbus_bool_t (* BusConnectionForeachFunction) (DBusConnection *connection, |
| 32 | void *data); |
| 33 | |
| 34 | |
| 35 | BusConnections* bus_connections_new (BusContext *context); |
| 36 | BusConnections* bus_connections_ref (BusConnections *connections); |
| 37 | void bus_connections_unref (BusConnections *connections); |
| 38 | dbus_bool_t bus_connections_setup_connection (BusConnections *connections, |
| 39 | DBusConnection *connection); |
| 40 | void bus_connections_foreach (BusConnections *connections, |
| 41 | BusConnectionForeachFunction function, |
| 42 | void *data); |
| 43 | void bus_connections_foreach_active (BusConnections *connections, |
| 44 | BusConnectionForeachFunction function, |
| 45 | void *data); |
| 46 | BusContext* bus_connections_get_context (BusConnections *connections); |
| 47 | void bus_connections_increment_stamp (BusConnections *connections); |
| 48 | BusContext* bus_connection_get_context (DBusConnection *connection); |
| 49 | BusConnections* bus_connection_get_connections (DBusConnection *connection); |
| 50 | BusRegistry* bus_connection_get_registry (DBusConnection *connection); |
| 51 | BusActivation* bus_connection_get_activation (DBusConnection *connection); |
| 52 | BusMatchmaker* bus_connection_get_matchmaker (DBusConnection *connection); |
| 53 | const char * bus_connection_get_loginfo (DBusConnection *connection); |
| 54 | BusSELinuxID* bus_connection_get_selinux_id (DBusConnection *connection); |
| 55 | dbus_bool_t bus_connections_check_limits (BusConnections *connections, |
| 56 | DBusConnection *requesting_completion, |
| 57 | DBusError *error); |
| 58 | void bus_connections_expire_incomplete (BusConnections *connections); |
| 59 | |
| 60 | dbus_bool_t bus_connections_expect_reply (BusConnections *connections, |
| 61 | BusTransaction *transaction, |
| 62 | DBusConnection *will_get_reply, |
| 63 | DBusConnection *will_send_reply, |
| 64 | DBusMessage *reply_to_this, |
| 65 | DBusError *error); |
| 66 | dbus_bool_t bus_connections_check_reply (BusConnections *connections, |
| 67 | BusTransaction *transaction, |
| 68 | DBusConnection *sending_reply, |
| 69 | DBusConnection *receiving_reply, |
| 70 | DBusMessage *reply, |
| 71 | DBusError *error); |
| 72 | |
| 73 | dbus_bool_t bus_connection_mark_stamp (DBusConnection *connection); |
| 74 | |
| 75 | dbus_bool_t bus_connection_is_active (DBusConnection *connection); |
| 76 | const char *bus_connection_get_name (DBusConnection *connection); |
| 77 | |
| 78 | dbus_bool_t bus_connection_preallocate_oom_error (DBusConnection *connection); |
| 79 | void bus_connection_send_oom_error (DBusConnection *connection, |
| 80 | DBusMessage *in_reply_to); |
| 81 | |
| 82 | /* called by signals.c */ |
| 83 | dbus_bool_t bus_connection_add_match_rule (DBusConnection *connection, |
| 84 | BusMatchRule *rule); |
| 85 | void bus_connection_add_match_rule_link (DBusConnection *connection, |
| 86 | DBusList *link); |
| 87 | void bus_connection_remove_match_rule (DBusConnection *connection, |
| 88 | BusMatchRule *rule); |
| 89 | int bus_connection_get_n_match_rules (DBusConnection *connection); |
| 90 | |
| 91 | |
| 92 | /* called by services.c */ |
| 93 | dbus_bool_t bus_connection_add_owned_service (DBusConnection *connection, |
| 94 | BusService *service); |
| 95 | void bus_connection_remove_owned_service (DBusConnection *connection, |
| 96 | BusService *service); |
| 97 | void bus_connection_add_owned_service_link (DBusConnection *connection, |
| 98 | DBusList *link); |
| 99 | int bus_connection_get_n_services_owned (DBusConnection *connection); |
| 100 | |
| 101 | /* called by driver.c */ |
| 102 | dbus_bool_t bus_connection_complete (DBusConnection *connection, |
| 103 | const DBusString *name, |
| 104 | DBusError *error); |
| 105 | |
| 106 | /* called by dispatch.c when the connection is dropped */ |
| 107 | void bus_connection_disconnected (DBusConnection *connection); |
| 108 | |
| 109 | dbus_bool_t bus_connection_is_in_unix_group (DBusConnection *connection, |
| 110 | unsigned long gid); |
| 111 | dbus_bool_t bus_connection_get_unix_groups (DBusConnection *connection, |
| 112 | unsigned long **groups, |
| 113 | int *n_groups, |
| 114 | DBusError *error); |
| 115 | BusClientPolicy* bus_connection_get_policy (DBusConnection *connection); |
| 116 | |
| 117 | /* transaction API so we can send or not send a block of messages as a whole */ |
| 118 | |
| 119 | typedef void (* BusTransactionCancelFunction) (void *data); |
| 120 | |
| 121 | BusTransaction* bus_transaction_new (BusContext *context); |
| 122 | BusContext* bus_transaction_get_context (BusTransaction *transaction); |
| 123 | BusConnections* bus_transaction_get_connections (BusTransaction *transaction); |
| 124 | dbus_bool_t bus_transaction_send (BusTransaction *transaction, |
| 125 | DBusConnection *connection, |
| 126 | DBusMessage *message); |
| 127 | dbus_bool_t bus_transaction_send_from_driver (BusTransaction *transaction, |
| 128 | DBusConnection *connection, |
| 129 | DBusMessage *message); |
| 130 | dbus_bool_t bus_transaction_send_error_reply (BusTransaction *transaction, |
| 131 | DBusConnection *connection, |
| 132 | const DBusError *error, |
| 133 | DBusMessage *in_reply_to); |
| 134 | void bus_transaction_cancel_and_free (BusTransaction *transaction); |
| 135 | void bus_transaction_execute_and_free (BusTransaction *transaction); |
| 136 | dbus_bool_t bus_transaction_add_cancel_hook (BusTransaction *transaction, |
| 137 | BusTransactionCancelFunction cancel_function, |
| 138 | void *data, |
| 139 | DBusFreeFunction free_data_function); |
| 140 | |
| 141 | #endif /* BUS_CONNECTION_H */ |