spa: move dbus helpers out of bluez plugin

The file is moved into a new "include-private" directory. This is done
because otherwise adjustments would have to be made to the list of installed
headers, the way include tests currently work and which files are
used for generating documentation.
This commit is contained in:
Barnabás Pőcze 2023-12-30 01:08:31 +01:00 committed by Wim Taymans
parent ddf3be0a39
commit 4aa2e44796
9 changed files with 12 additions and 11 deletions

View file

@ -0,0 +1,72 @@
/* Spa DBus helpers */
/* SPDX-FileCopyrightText: Copyright © 2023 PipeWire authors */
/* SPDX-License-Identifier: MIT */
#ifndef SPA_PRIVATE_DBUS_HELPERS_H
#define SPA_PRIVATE_DBUS_HELPERS_H
#include <stdbool.h>
#include <dbus/dbus.h>
#include <spa/utils/cleanup.h>
static inline void cancel_and_unref(DBusPendingCall **pp)
{
DBusPendingCall *pending_call = spa_steal_ptr(*pp);
if (pending_call) {
dbus_pending_call_cancel(pending_call);
dbus_pending_call_unref(pending_call);
}
}
static inline DBusMessage *steal_reply_and_unref(DBusPendingCall **pp)
{
DBusPendingCall *pending_call = spa_steal_ptr(*pp);
DBusMessage *reply = dbus_pending_call_steal_reply(pending_call);
dbus_pending_call_unref(pending_call);
return reply;
}
SPA_DEFINE_AUTOPTR_CLEANUP(DBusMessage, DBusMessage, {
spa_clear_ptr(*thing, dbus_message_unref);
})
static inline bool reply_with_error(DBusConnection *conn,
DBusMessage *reply_to,
const char *error_name, const char *error_message)
{
spa_autoptr(DBusMessage) reply = dbus_message_new_error(reply_to, error_name, error_message);
return reply && dbus_connection_send(conn, reply, NULL);
}
static inline DBusPendingCall *send_with_reply(DBusConnection *conn,
DBusMessage *m,
DBusPendingCallNotifyFunction callback, void *user_data)
{
DBusPendingCall *pending_call;
if (!dbus_connection_send_with_reply(conn, m, &pending_call, DBUS_TIMEOUT_USE_DEFAULT))
return NULL;
if (!pending_call)
return NULL;
if (!dbus_pending_call_set_notify(pending_call, callback, user_data, NULL)) {
dbus_pending_call_cancel(pending_call);
dbus_pending_call_unref(pending_call);
return NULL;
}
return pending_call;
}
SPA_DEFINE_AUTO_CLEANUP(DBusError, DBusError, {
dbus_error_free(thing);
})
#endif /* SPA_PRIVATE_DBUS_HELPERS_H */