1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 /* signals.h Bus signal connection implementation 3 * 4 * Copyright (C) 2003 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_SIGNALS_H 25 #define BUS_SIGNALS_H 26 27 #include <dbus/dbus.h> 28 #include <dbus/dbus-string.h> 29 #include <dbus/dbus-sysdeps.h> 30 #include "connection.h" 31 32 typedef enum 33 { 34 BUS_MATCH_MESSAGE_TYPE = 1 << 0, 35 BUS_MATCH_INTERFACE = 1 << 1, 36 BUS_MATCH_MEMBER = 1 << 2, 37 BUS_MATCH_SENDER = 1 << 3, 38 BUS_MATCH_DESTINATION = 1 << 4, 39 BUS_MATCH_PATH = 1 << 5, 40 BUS_MATCH_ARGS = 1 << 6, 41 BUS_MATCH_PATH_NAMESPACE = 1 << 7, 42 BUS_MATCH_CLIENT_IS_EAVESDROPPING = 1 << 8 43 } BusMatchFlags; 44 45 BusMatchRule* bus_match_rule_new (DBusConnection *matches_go_to); 46 BusMatchRule* bus_match_rule_ref (BusMatchRule *rule); 47 void bus_match_rule_unref (BusMatchRule *rule); 48 49 dbus_bool_t bus_match_rule_set_message_type (BusMatchRule *rule, 50 int type); 51 dbus_bool_t bus_match_rule_set_interface (BusMatchRule *rule, 52 const char *interface); 53 dbus_bool_t bus_match_rule_set_member (BusMatchRule *rule, 54 const char *member); 55 dbus_bool_t bus_match_rule_set_sender (BusMatchRule *rule, 56 const char *sender); 57 dbus_bool_t bus_match_rule_set_destination (BusMatchRule *rule, 58 const char *destination); 59 dbus_bool_t bus_match_rule_set_path (BusMatchRule *rule, 60 const char *path, 61 dbus_bool_t is_namespace); 62 dbus_bool_t bus_match_rule_set_arg (BusMatchRule *rule, 63 int arg, 64 const DBusString *value, 65 dbus_bool_t is_path, 66 dbus_bool_t is_namespace); 67 68 /* Calling this methods a client declares that it is creating a rule which 69 * needs to eavesdrop (e.g., dbus-monitor), any other created rules not 70 * setting themselves as eavesdropping won't receive any message not addressed 71 * to them, when eavedrop is enabled in the policy. On the other hand, when 72 * eavedrop is not enabled in policy, this method won't have any effect */ 73 void bus_match_rule_set_client_is_eavesdropping (BusMatchRule *rule, 74 dbus_bool_t is_eavesdropping); 75 76 BusMatchRule* bus_match_rule_parse (DBusConnection *matches_go_to, 77 const DBusString *rule_text, 78 DBusError *error); 79 80 BusMatchmaker* bus_matchmaker_new (void); 81 BusMatchmaker* bus_matchmaker_ref (BusMatchmaker *matchmaker); 82 void bus_matchmaker_unref (BusMatchmaker *matchmaker); 83 84 dbus_bool_t bus_matchmaker_add_rule (BusMatchmaker *matchmaker, 85 BusMatchRule *rule); 86 dbus_bool_t bus_matchmaker_remove_rule_by_value (BusMatchmaker *matchmaker, 87 BusMatchRule *value, 88 DBusError *error); 89 void bus_matchmaker_remove_rule (BusMatchmaker *matchmaker, 90 BusMatchRule *rule); 91 void bus_matchmaker_disconnected (BusMatchmaker *matchmaker, 92 DBusConnection *connection); 93 dbus_bool_t bus_matchmaker_get_recipients (BusMatchmaker *matchmaker, 94 BusConnections *connections, 95 DBusConnection *sender, 96 DBusConnection *addressed_recipient, 97 DBusMessage *message, 98 DBusList **recipients_p); 99 100 #endif /* BUS_SIGNALS_H */ 101