/* Copyright (C) 2010 The giomm Development Team
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see .
*/
_CONFIGINCLUDE(giommconfig.h)
#include
#include
#include
#ifdef G_OS_UNIX
# include
#endif
_DEFS(giomm,gio)
_PINCLUDE(glibmm/private/object_p.h)
namespace Gio
{
namespace DBus
{
_WRAP_ENUM(MessageType, GDBusMessageType, NO_GTYPE, decl_prefix GIOMM_API)
_WRAP_ENUM(MessageFlags, GDBusMessageFlags, NO_GTYPE, decl_prefix GIOMM_API)
_WRAP_ENUM(MessageHeaderField, GDBusMessageHeaderField, NO_GTYPE, decl_prefix GIOMM_API)
_WRAP_ENUM(CapabilityFlags, GDBusCapabilityFlags, gtype_func g_dbus_capability_flags_get_type, decl_prefix GIOMM_API)
_GMMPROC_EXTRA_NAMESPACE(DBus)
/** A type for representing D-Bus messages that can be sent or received on a
* Connection.
*
* @newin{2,28}
* @ingroup DBus
*/
class GIOMM_API Message : public Glib::Object
{
_CLASS_GOBJECT(Message, GDBusMessage, G_DBUS_MESSAGE, Glib::Object, GObject, , , GIOMM_API)
protected:
_CTOR_DEFAULT
_IGNORE(g_dbus_message_new)
public:
_WRAP_METHOD_DOCS_ONLY(g_dbus_message_new)
_WRAP_CREATE()
// Note that we can't use _WRAP_CTOR() and _WRAP_CREATE() because the C functions do more than just call g_object_new():
// See http://bugzilla.gnome.org/show_bug.cgi?id=624977
// See here about whether the parameters should be ustring or std::string:
// http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names
// They are generally UTF-8 that can only contain the ASCII subset,
// so ustring still seems preferrable to std::string, which generally implies an unknown encoding for us.
// The parameter name 'interface' can cause compilation errors with MinGW.
// See https://bugzilla.gnome.org/show_bug.cgi?id=735137
// The parameter name in glib is 'interface_'.
_WRAP_METHOD(static Glib::RefPtr create_signal(const Glib::ustring& path, const Glib::ustring& iface, const Glib::ustring& signal), g_dbus_message_new_signal)
_WRAP_METHOD(static Glib::RefPtr create_method_call(const Glib::ustring& name, const Glib::ustring& path, const Glib::ustring& iface, const Glib::ustring& method), g_dbus_message_new_method_call)
_WRAP_METHOD(static Glib::RefPtr create_method_reply(const Glib::RefPtr& method_call_message), g_dbus_message_new_method_reply)
_WRAP_METHOD(static Glib::RefPtr create_method_error_literal(const Glib::RefPtr& method_call_message, const Glib::ustring& error_name, const Glib::ustring& error_message), g_dbus_message_new_method_error_literal)
// Ignore variable argument functions.
_IGNORE(g_dbus_message_new_method_error, g_dbus_message_new_method_error_valist)
_WRAP_METHOD(static Glib::RefPtr create_from_blob(const guchar* blob, gsize blob_len, CapabilityFlags capabilities = CapabilityFlags::NONE), g_dbus_message_new_from_blob, errthrow "Gio::Error")
_WRAP_METHOD(Glib::ustring print(guint indent), g_dbus_message_print)
_WRAP_METHOD(bool get_locked() const, g_dbus_message_get_locked)
_WRAP_METHOD(void lock() ,g_dbus_message_lock)
_WRAP_METHOD(Glib::RefPtr copy() const, g_dbus_message_copy, errthrow "Gio::Error")
_WRAP_METHOD(MessageType get_message_type() const, g_dbus_message_get_message_type)
_WRAP_METHOD(void set_message_type(MessageType type), g_dbus_message_set_message_type)
// BIG_ENDIAN and LITTLE_ENDIAN are defined as preprocessor macros somewhere.
_WRAP_ENUM(ByteOrder, GDBusMessageByteOrder, NO_GTYPE, s#ENDIAN$#ENDIAN_ORDER#, decl_prefix GIOMM_API)
_WRAP_METHOD(ByteOrder get_byte_order() const, g_dbus_message_get_byte_order)
_WRAP_METHOD(void set_byte_order(ByteOrder byte_order), g_dbus_message_set_byte_order)
_WRAP_METHOD(guint32 get_serial() const, g_dbus_message_get_serial)
_WRAP_METHOD(void set_serial(guint32 serial), g_dbus_message_set_serial)
_WRAP_METHOD(MessageFlags get_flags() const, g_dbus_message_get_flags)
_WRAP_METHOD(void set_flags(MessageFlags flags), g_dbus_message_set_flags)
/** Gets the body of a message. The body is returned in @a value.
* @param value Location in which to store the header.
*/
void get_body(Glib::VariantBase& value) const;
_IGNORE(g_dbus_message_get_body)
_WRAP_METHOD(void set_body(const Glib::VariantBase& body), g_dbus_message_set_body)
_WRAP_METHOD(Glib::RefPtr get_unix_fd_list(), g_dbus_message_get_unix_fd_list, refreturn, ifdef G_OS_UNIX)
_WRAP_METHOD(Glib::RefPtr get_unix_fd_list() const, g_dbus_message_get_unix_fd_list, refreturn, constversion, ifdef G_OS_UNIX)
_WRAP_METHOD(void set_unix_fd_list(const Glib::RefPtr& fd_list), g_dbus_message_set_unix_fd_list, ifdef G_OS_UNIX)
#ifdef G_OS_UNIX
/** Clears the existing UNIX file descriptor list.
*/
void unset_unix_fd_list();
#endif //G_OS_UNIX
_WRAP_METHOD(guint32 get_num_unix_fds() const, g_dbus_message_get_num_unix_fds)
_WRAP_METHOD(void set_num_unix_fds(guint32 value), g_dbus_message_set_num_unix_fds)
/** Gets a header field on the message. The header is returned in @a value.
* @param value Location in which to store the header.
* @param header_field The header field type.
*/
void get_header(Glib::VariantBase& value, MessageHeaderField header_field) const;
_IGNORE(g_dbus_message_get_header)
_WRAP_METHOD(void set_header(MessageHeaderField header_field, const Glib::VariantBase& value), g_dbus_message_set_header)
#m4 _CONVERSION(`guchar*',`std::vector',`Glib::ArrayHandler::array_to_vector($3, Glib::OWNERSHIP_SHALLOW)')
_WRAP_METHOD(std::vector get_header_fields() const, g_dbus_message_get_header_fields)
_WRAP_METHOD(Glib::ustring get_destination() const, g_dbus_message_get_destination)
_WRAP_METHOD(void set_destination(const Glib::ustring& value), g_dbus_message_set_destination)
_WRAP_METHOD(Glib::ustring get_error_name() const, g_dbus_message_get_error_name)
_WRAP_METHOD(void set_error_name(const Glib::ustring& value), g_dbus_message_set_error_name)
_WRAP_METHOD(Glib::ustring get_interface() const, g_dbus_message_get_interface)
_WRAP_METHOD(void set_interface(const Glib::ustring& value), g_dbus_message_set_interface)
_WRAP_METHOD(Glib::ustring get_member() const, g_dbus_message_get_member)
_WRAP_METHOD(void set_member(const Glib::ustring& value), g_dbus_message_set_member)
_WRAP_METHOD(Glib::ustring get_path() const, g_dbus_message_get_path)
_WRAP_METHOD(void set_path(const Glib::ustring& value), g_dbus_message_set_path)
_WRAP_METHOD(guint32 get_reply_serial() const, g_dbus_message_get_reply_serial)
_WRAP_METHOD(void set_reply_serial(guint32 value), g_dbus_message_set_reply_serial)
_WRAP_METHOD(Glib::ustring get_sender() const, g_dbus_message_get_sender)
_WRAP_METHOD(void set_sender(const Glib::ustring& value), g_dbus_message_set_sender)
_WRAP_METHOD(Glib::ustring get_signature() const, g_dbus_message_get_signature)
_WRAP_METHOD(void set_signature(const Glib::ustring& value), g_dbus_message_set_signature)
_WRAP_METHOD(Glib::ustring get_arg0() const, g_dbus_message_get_arg0)
_WRAP_METHOD(static gssize bytes_needed(const guchar* blob, gsize blob_len), g_dbus_message_bytes_needed, errthrow "Gio::Error")
_WRAP_METHOD(guchar* to_blob(gsize& out_size, CapabilityFlags capabilities = CapabilityFlags::NONE), g_dbus_message_to_blob, errthrow "Gio::Error")
_WRAP_METHOD(void to_exception(), g_dbus_message_to_gerror, errthrow)
_WRAP_PROPERTY("locked", bool)
};
} //namespace DBus
} // namespace Gio