blob: 2b7b5d2bf064f0f10dca3ff1214beb58f789e94e [file] [log] [blame]
/* libnih
*
* Copyright © 2009 Scott James Remnant <scott@netsplit.com>.
* Copyright © 2009 Canonical Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2, as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef NIH_DBUS_MESSAGE_H
#define NIH_DBUS_MESSAGE_H
/**
* The NihDBusMessage structure references both an incoming D-Bus message
* and the connection it was received on, and may be created with the
* nih_dbus_message_new() function.
*
* This allows both a single pointer to be passed around to deal with a
* message, and also provides an nih_alloc() context for attaching allocated
* data that can be discarded when the message has been processed (often
* strings used to generate the reply, for example).
*
* A typical function that uses this structure is nih_dbus_message_error()
* which generates and sends a reply to the incoming message that is an
* error return with the given name and format.
**/
#include <nih/macros.h>
#include <dbus/dbus.h>
/**
* NihDBusMessage:
* @connection: D-Bus connection message was received on,
* @message: message object received.
*
* This structure is used as a context for the processing of a message; the
* primary reason for its existance is to be used as an nih_alloc() context
* for any reply data.
*
* Instances are allocated automatically and passed to marshaller functions,
* and freed on their return.
**/
typedef struct nih_dbus_message {
DBusConnection *connection;
DBusMessage * message;
} NihDBusMessage;
NIH_BEGIN_EXTERN
NihDBusMessage *nih_dbus_message_new (const void *parent,
DBusConnection *connection,
DBusMessage *message)
__attribute__ ((warn_unused_result));
int nih_dbus_message_error (NihDBusMessage *msg,
const char *name,
const char *format, ...)
__attribute__ ((warn_unused_result));
NIH_END_EXTERN
#endif /* NIH_DBUS_MESSAGE_H */