bus.h revision a24270a451c4ac7f8018bdd909a8f762e6abe80c
16ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington/* -*- mode: C; c-file-style: "gnu" -*- */ 26ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington/* bus.h message bus context object 36ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * 46ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * Copyright (C) 2003 Red Hat, Inc. 56ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * 643605a6f4e78a8c28afb4b1e924dff0301e0e95cHavoc Pennington * Licensed under the Academic Free License version 2.1 76ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * 86ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * This program is free software; you can redistribute it and/or modify 96ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * it under the terms of the GNU General Public License as published by 106ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * the Free Software Foundation; either version 2 of the License, or 116ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * (at your option) any later version. 126ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * 136ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * This program is distributed in the hope that it will be useful, 146ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * but WITHOUT ANY WARRANTY; without even the implied warranty of 156ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 166ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * GNU General Public License for more details. 176ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * 186ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * You should have received a copy of the GNU General Public License 196ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * along with this program; if not, write to the Free Software 206ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 216ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington * 226ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington */ 236ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington 246ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington#ifndef BUS_BUS_H 256ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington#define BUS_BUS_H 266ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington 27d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington#include <config.h> 28d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington 296ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington#include <dbus/dbus.h> 306ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington#include <dbus/dbus-string.h> 31df008ef97deacd5bb00ac335e5d8671798fa09ddHavoc Pennington#include <dbus/dbus-mainloop.h> 327c022a80c9b8c5b085514ea49f983c0489e945abHavoc Pennington#include <dbus/dbus-userdb.h> 331b08036103a70159e7a67b2349306710edcd6654Havoc Pennington 34bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusActivation BusActivation; 35bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusConnections BusConnections; 36bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusContext BusContext; 37bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusPolicy BusPolicy; 38bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusClientPolicy BusClientPolicy; 39bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusPolicyRule BusPolicyRule; 40bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusRegistry BusRegistry; 411e9b185b0c274ef0d684b1e43418388225321e72Havoc Penningtontypedef struct BusSELinuxID BusSELinuxID; 42bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusService BusService; 43bc983ecf15455f49e7a92d038c93e181ae2cb438Havoc Penningtontypedef struct BusTransaction BusTransaction; 44a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtontypedef struct BusMatchmaker BusMatchmaker; 45a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtontypedef struct BusMatchRule BusMatchRule; 463185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington 473185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Penningtontypedef struct 483185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington{ 4964f5ae1a79a8cd86a3aae55e485729da438d84d0Havoc Pennington long max_incoming_bytes; /**< How many incoming message bytes for a single connection */ 50b3bd48edfc1aab0a9dc64bfa4c380d845d218e73Havoc Pennington long max_outgoing_bytes; /**< How many outgoing bytes can be queued for a single connection */ 513185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington long max_message_size; /**< Max size of a single message in bytes */ 523185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington int activation_timeout; /**< How long to wait for an activation to time out */ 533185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington int auth_timeout; /**< How long to wait for an authentication to time out */ 543185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington int max_completed_connections; /**< Max number of authorized connections */ 553185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington int max_incomplete_connections; /**< Max number of incomplete connections */ 563185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington int max_connections_per_user; /**< Max number of connections auth'd as same user */ 57b3bd48edfc1aab0a9dc64bfa4c380d845d218e73Havoc Pennington int max_pending_activations; /**< Max number of pending activations for the entire bus */ 58b3bd48edfc1aab0a9dc64bfa4c380d845d218e73Havoc Pennington int max_services_per_connection; /**< Max number of owned services for a single connection */ 59a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington int max_match_rules_per_connection; /**< Max number of match rules for a single connection */ 6064f5ae1a79a8cd86a3aae55e485729da438d84d0Havoc Pennington int max_replies_per_connection; /**< Max number of replies that can be pending for each connection */ 6164f5ae1a79a8cd86a3aae55e485729da438d84d0Havoc Pennington int reply_timeout; /**< How long to wait before timing out a reply */ 623185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington} BusLimits; 633185d7edde8ffc7672aa7d771966b0f1e0158aeaHavoc Pennington 64a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthentypedef enum 65a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen{ 66a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen FORK_FOLLOW_CONFIG_FILE, 67a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen FORK_ALWAYS, 68a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen FORK_NEVER 69a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen} ForceForkSetting; 70a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen 71a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonBusContext* bus_context_new (const DBusString *config_file, 72a24270a451c4ac7f8018bdd909a8f762e6abe80cDavid Zeuthen ForceForkSetting force_fork, 73a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington int print_addr_fd, 74a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington int print_pid_fd, 75a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusError *error); 76600e411f25082bcf82d610a4c71b0dc3435b5a42Jon Trowbridgedbus_bool_t bus_context_reload_config (BusContext *context, 77600e411f25082bcf82d610a4c71b0dc3435b5a42Jon Trowbridge DBusError *error); 78a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonvoid bus_context_shutdown (BusContext *context); 799f1a60dbba69844c0a04b3dd86280352736187ceMikael HallendalBusContext* bus_context_ref (BusContext *context); 80a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonvoid bus_context_unref (BusContext *context); 81a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonconst char* bus_context_get_type (BusContext *context); 82a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonconst char* bus_context_get_address (BusContext *context); 83a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonBusRegistry* bus_context_get_registry (BusContext *context); 84a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonBusConnections* bus_context_get_connections (BusContext *context); 85a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonBusActivation* bus_context_get_activation (BusContext *context); 86a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonBusMatchmaker* bus_context_get_matchmaker (BusContext *context); 87a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonDBusLoop* bus_context_get_loop (BusContext *context); 88a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonDBusUserDatabase* bus_context_get_user_database (BusContext *context); 891e9b185b0c274ef0d684b1e43418388225321e72Havoc Pennington 90a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtondbus_bool_t bus_context_allow_user (BusContext *context, 91a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington unsigned long uid); 921e9b185b0c274ef0d684b1e43418388225321e72Havoc PenningtonBusPolicy* bus_context_get_policy (BusContext *context); 931e9b185b0c274ef0d684b1e43418388225321e72Havoc Pennington 94a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc PenningtonBusClientPolicy* bus_context_create_client_policy (BusContext *context, 95a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusConnection *connection, 96a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusError *error); 97a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_activation_timeout (BusContext *context); 98a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_auth_timeout (BusContext *context); 99a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_max_completed_connections (BusContext *context); 100a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_max_incomplete_connections (BusContext *context); 101a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_max_connections_per_user (BusContext *context); 102a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_max_pending_activations (BusContext *context); 103a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_max_services_per_connection (BusContext *context); 104a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtonint bus_context_get_max_match_rules_per_connection (BusContext *context); 10564f5ae1a79a8cd86a3aae55e485729da438d84d0Havoc Penningtonint bus_context_get_max_replies_per_connection (BusContext *context); 10664f5ae1a79a8cd86a3aae55e485729da438d84d0Havoc Penningtonint bus_context_get_reply_timeout (BusContext *context); 107a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Penningtondbus_bool_t bus_context_check_security_policy (BusContext *context, 10864f5ae1a79a8cd86a3aae55e485729da438d84d0Havoc Pennington BusTransaction *transaction, 109a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusConnection *sender, 110a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusConnection *addressed_recipient, 111a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusConnection *proposed_recipient, 112a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusMessage *message, 113a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington DBusError *error); 114e8d396efef695b9868b0112c4a6266c97678fa8aHavoc Pennington 1156ecc14ffabcffb69aa938a67940db48272e05046Havoc Pennington#endif /* BUS_BUS_H */ 116