19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering This file is part of systemd.
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering Copyright 2013 Lennart Poettering
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering systemd is free software; you can redistribute it and/or modify it
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering under the terms of the GNU Lesser General Public License as published by
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering the Free Software Foundation; either version 2.1 of the License, or
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering (at your option) any later version.
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering systemd is distributed in the hope that it will be useful, but
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering Lesser General Public License for more details.
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering You should have received a copy of the GNU Lesser General Public License
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering slot = malloc0(offsetof(sd_bus_slot, reply_callback) + extra);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering_public_ sd_bus_slot* sd_bus_slot_ref(sd_bus_slot *slot) {
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poetteringvoid bus_slot_disconnect(sd_bus_slot *slot) {
c9fe4af70d2c884c1f95714a81ad6d1de31d5186Michal Schmidt ordered_hashmap_remove(slot->bus->reply_callbacks, &slot->reply_callback.cookie);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering prioq_remove(slot->bus->reply_callbacks_prioq, &slot->reply_callback, &slot->reply_callback.prioq_idx);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering slot->bus->filter_callbacks_modified = true;
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering LIST_REMOVE(callbacks, slot->bus->filter_callbacks, &slot->filter_callback);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering bus_remove_match_internal(slot->bus, slot->match_callback.match_string, slot->match_callback.cookie);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering slot->bus->match_callbacks_modified = true;
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering bus_match_remove(&slot->bus->match_callbacks, &slot->match_callback);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering LIST_REMOVE(callbacks, slot->node_callback.node->callbacks, &slot->node_callback);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering bus_node_gc(slot->bus, slot->node_callback.node);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering LIST_REMOVE(enumerators, slot->node_enumerator.node->enumerators, &slot->node_enumerator);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering bus_node_gc(slot->bus, slot->node_enumerator.node);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering LIST_REMOVE(object_managers, slot->node_object_manager.node->object_managers, &slot->node_object_manager);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering bus_node_gc(slot->bus, slot->node_object_manager.node);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering if (slot->node_vtable.node && slot->node_vtable.interface && slot->node_vtable.vtable) {
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering for (v = slot->node_vtable.vtable; v->type != _SD_BUS_VTABLE_END; v++) {
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering key.interface = slot->node_vtable.interface;
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering x = hashmap_remove(slot->bus->vtable_methods, &key);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering key.interface = slot->node_vtable.interface;
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering x = hashmap_remove(slot->bus->vtable_properties, &key);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering LIST_REMOVE(vtables, slot->node_vtable.node->vtables, &slot->node_vtable);
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering bus_node_gc(slot->bus, slot->node_vtable.node);
a71fe8b8aee1cb78c4d8c56eeb234743f64e4b4dLennart Poettering assert_not_reached("Wut? Unknown slot type?");
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering_public_ sd_bus_slot* sd_bus_slot_unref(sd_bus_slot *slot) {
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering_public_ sd_bus* sd_bus_slot_get_bus(sd_bus_slot *slot) {
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering_public_ void *sd_bus_slot_get_userdata(sd_bus_slot *slot) {
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering_public_ void *sd_bus_slot_set_userdata(sd_bus_slot *slot, void *userdata) {
19befb2d5fc087f96e40ddc432b2cc9385666209Lennart Poettering_public_ sd_bus_message *sd_bus_slot_get_current_message(sd_bus_slot *slot) {
caa829849d6ac9f6e173f585f732054358311ae1Lennart Poettering_public_ sd_bus_message_handler_t sd_bus_slot_get_current_handler(sd_bus_slot *slot) {
caa829849d6ac9f6e173f585f732054358311ae1Lennart Poettering_public_ void* sd_bus_slot_get_current_userdata(sd_bus_slot *slot) {
9cbfc66c621c42aa6e58e9e0da0adfb01efa7537Lennart Poettering_public_ int sd_bus_slot_set_description(sd_bus_slot *slot, const char *description) {
9cbfc66c621c42aa6e58e9e0da0adfb01efa7537Lennart Poettering return free_and_strdup(&slot->description, description);
839b6dbba9a6e4f08ddc2ae6d2b2b260d76f7c74David Herrmann_public_ int sd_bus_slot_get_description(sd_bus_slot *slot, const char **description) {