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 } BusMatchFlags; 42 43 BusMatchRule* bus_match_rule_new (DBusConnection *matches_go_to); 44 BusMatchRule* bus_match_rule_ref (BusMatchRule *rule); 45 void bus_match_rule_unref (BusMatchRule *rule); 46 47 dbus_bool_t bus_match_rule_set_message_type (BusMatchRule *rule, 48 int type); 49 dbus_bool_t bus_match_rule_set_interface (BusMatchRule *rule, 50 const char *interface); 51 dbus_bool_t bus_match_rule_set_member (BusMatchRule *rule, 52 const char *member); 53 dbus_bool_t bus_match_rule_set_sender (BusMatchRule *rule, 54 const char *sender); 55 dbus_bool_t bus_match_rule_set_destination (BusMatchRule *rule, 56 const char *destination); 57 dbus_bool_t bus_match_rule_set_path (BusMatchRule *rule, 58 const char *path); 59 dbus_bool_t bus_match_rule_set_arg (BusMatchRule *rule, 60 int arg, 61 const DBusString *value, 62 dbus_bool_t is_path); 63 64 BusMatchRule* bus_match_rule_parse (DBusConnection *matches_go_to, 65 const DBusString *rule_text, 66 DBusError *error); 67 68 BusMatchmaker* bus_matchmaker_new (void); 69 BusMatchmaker* bus_matchmaker_ref (BusMatchmaker *matchmaker); 70 void bus_matchmaker_unref (BusMatchmaker *matchmaker); 71 72 dbus_bool_t bus_matchmaker_add_rule (BusMatchmaker *matchmaker, 73 BusMatchRule *rule); 74 dbus_bool_t bus_matchmaker_remove_rule_by_value (BusMatchmaker *matchmaker, 75 BusMatchRule *value, 76 DBusError *error); 77 void bus_matchmaker_remove_rule (BusMatchmaker *matchmaker, 78 BusMatchRule *rule); 79 void bus_matchmaker_disconnected (BusMatchmaker *matchmaker, 80 DBusConnection *connection); 81 dbus_bool_t bus_matchmaker_get_recipients (BusMatchmaker *matchmaker, 82 BusConnections *connections, 83 DBusConnection *sender, 84 DBusConnection *addressed_recipient, 85 DBusMessage *message, 86 DBusList **recipients_p); 87 88 #endif /* BUS_SIGNALS_H */ 89