1 /* -*- mode: C; c-file-style: "gnu" -*- */ 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 char *value); 62 63 BusMatchRule* bus_match_rule_parse (DBusConnection *matches_go_to, 64 const DBusString *rule_text, 65 DBusError *error); 66 67 BusMatchmaker* bus_matchmaker_new (void); 68 BusMatchmaker* bus_matchmaker_ref (BusMatchmaker *matchmaker); 69 void bus_matchmaker_unref (BusMatchmaker *matchmaker); 70 71 dbus_bool_t bus_matchmaker_add_rule (BusMatchmaker *matchmaker, 72 BusMatchRule *rule); 73 dbus_bool_t bus_matchmaker_remove_rule_by_value (BusMatchmaker *matchmaker, 74 BusMatchRule *value, 75 DBusError *error); 76 void bus_matchmaker_remove_rule (BusMatchmaker *matchmaker, 77 BusMatchRule *rule); 78 void bus_matchmaker_disconnected (BusMatchmaker *matchmaker, 79 DBusConnection *disconnected); 80 dbus_bool_t bus_matchmaker_get_recipients (BusMatchmaker *matchmaker, 81 BusConnections *connections, 82 DBusConnection *sender, 83 DBusConnection *addressed_recipient, 84 DBusMessage *message, 85 DBusList **recipients_p); 86 87 #endif /* BUS_SIGNALS_H */ 88