Path: blob/master/thirdparty/linuxbsd_headers/dbus/dbus-message.h
9903 views
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */1/* dbus-message.h DBusMessage object2*3* Copyright (C) 2002, 2003, 2005 Red Hat Inc.4*5* Licensed under the Academic Free License version 2.16*7* This program is free software; you can redistribute it and/or modify8* it under the terms of the GNU General Public License as published by9* the Free Software Foundation; either version 2 of the License, or10* (at your option) any later version.11*12* This program is distributed in the hope that it will be useful,13* but WITHOUT ANY WARRANTY; without even the implied warranty of14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the15* GNU General Public License for more details.16*17* You should have received a copy of the GNU General Public License18* along with this program; if not, write to the Free Software19* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA20*21*/22#if !defined (DBUS_INSIDE_DBUS_H) && !defined (DBUS_COMPILATION)23#error "Only <dbus/dbus.h> can be included directly, this file may disappear or change contents."24#endif2526#ifndef DBUS_MESSAGE_H27#define DBUS_MESSAGE_H2829#include <dbus/dbus-macros.h>30#include <dbus/dbus-types.h>31#include <dbus/dbus-arch-deps.h>32#include <dbus/dbus-memory.h>33#include <dbus/dbus-errors.h>34#include <stdarg.h>3536DBUS_BEGIN_DECLS3738/**39* @addtogroup DBusMessage40* @{41*/4243typedef struct DBusMessage DBusMessage;44/**45* Opaque type representing a message iterator. Can be copied by value and46* allocated on the stack.47*48* A DBusMessageIter usually contains no allocated memory. However, there49* is one special case: after a successful call to50* dbus_message_iter_open_container(), the caller is responsible for calling51* either dbus_message_iter_close_container() or52* dbus_message_iter_abandon_container() exactly once, with the same pair53* of iterators.54*/55typedef struct DBusMessageIter DBusMessageIter;5657/**58* DBusMessageIter struct; contains no public fields.59*/60struct DBusMessageIter61{62void *dummy1; /**< Don't use this */63void *dummy2; /**< Don't use this */64dbus_uint32_t dummy3; /**< Don't use this */65int dummy4; /**< Don't use this */66int dummy5; /**< Don't use this */67int dummy6; /**< Don't use this */68int dummy7; /**< Don't use this */69int dummy8; /**< Don't use this */70int dummy9; /**< Don't use this */71int dummy10; /**< Don't use this */72int dummy11; /**< Don't use this */73int pad1; /**< Don't use this */74void *pad2; /**< Don't use this */75void *pad3; /**< Don't use this */76};7778/**79* A message iterator for which dbus_message_iter_abandon_container_if_open()80* is the only valid operation.81*/82#define DBUS_MESSAGE_ITER_INIT_CLOSED \83{ \84NULL, /* dummy1 */ \85NULL, /* dummy2 */ \860, /* dummy3 */ \870, /* dummy4 */ \880, /* dummy5 */ \890, /* dummy6 */ \900, /* dummy7 */ \910, /* dummy8 */ \920, /* dummy9 */ \930, /* dummy10 */ \940, /* dummy11 */ \950, /* pad1 */ \96NULL, /* pad2 */ \97NULL /* pad3 */ \98}99100DBUS_EXPORT101DBusMessage* dbus_message_new (int message_type);102DBUS_EXPORT103DBusMessage* dbus_message_new_method_call (const char *bus_name,104const char *path,105const char *iface,106const char *method);107DBUS_EXPORT108DBusMessage* dbus_message_new_method_return (DBusMessage *method_call);109DBUS_EXPORT110DBusMessage* dbus_message_new_signal (const char *path,111const char *iface,112const char *name);113DBUS_EXPORT114DBusMessage* dbus_message_new_error (DBusMessage *reply_to,115const char *error_name,116const char *error_message);117DBUS_EXPORT118DBusMessage* dbus_message_new_error_printf (DBusMessage *reply_to,119const char *error_name,120const char *error_format,121...) _DBUS_GNUC_PRINTF (3, 4);122123DBUS_EXPORT124DBusMessage* dbus_message_copy (const DBusMessage *message);125126DBUS_EXPORT127DBusMessage* dbus_message_ref (DBusMessage *message);128DBUS_EXPORT129void dbus_message_unref (DBusMessage *message);130DBUS_EXPORT131int dbus_message_get_type (DBusMessage *message);132DBUS_EXPORT133dbus_bool_t dbus_message_set_path (DBusMessage *message,134const char *object_path);135DBUS_EXPORT136const char* dbus_message_get_path (DBusMessage *message);137DBUS_EXPORT138dbus_bool_t dbus_message_has_path (DBusMessage *message,139const char *object_path);140DBUS_EXPORT141dbus_bool_t dbus_message_set_interface (DBusMessage *message,142const char *iface);143DBUS_EXPORT144const char* dbus_message_get_interface (DBusMessage *message);145DBUS_EXPORT146dbus_bool_t dbus_message_has_interface (DBusMessage *message,147const char *iface);148DBUS_EXPORT149dbus_bool_t dbus_message_set_member (DBusMessage *message,150const char *member);151DBUS_EXPORT152const char* dbus_message_get_member (DBusMessage *message);153DBUS_EXPORT154dbus_bool_t dbus_message_has_member (DBusMessage *message,155const char *member);156DBUS_EXPORT157dbus_bool_t dbus_message_set_error_name (DBusMessage *message,158const char *name);159DBUS_EXPORT160const char* dbus_message_get_error_name (DBusMessage *message);161DBUS_EXPORT162dbus_bool_t dbus_message_set_destination (DBusMessage *message,163const char *destination);164DBUS_EXPORT165const char* dbus_message_get_destination (DBusMessage *message);166DBUS_EXPORT167dbus_bool_t dbus_message_set_sender (DBusMessage *message,168const char *sender);169DBUS_EXPORT170const char* dbus_message_get_sender (DBusMessage *message);171DBUS_EXPORT172const char* dbus_message_get_signature (DBusMessage *message);173DBUS_EXPORT174void dbus_message_set_no_reply (DBusMessage *message,175dbus_bool_t no_reply);176DBUS_EXPORT177dbus_bool_t dbus_message_get_no_reply (DBusMessage *message);178DBUS_EXPORT179dbus_bool_t dbus_message_is_method_call (DBusMessage *message,180const char *iface,181const char *method);182DBUS_EXPORT183dbus_bool_t dbus_message_is_signal (DBusMessage *message,184const char *iface,185const char *signal_name);186DBUS_EXPORT187dbus_bool_t dbus_message_is_error (DBusMessage *message,188const char *error_name);189DBUS_EXPORT190dbus_bool_t dbus_message_has_destination (DBusMessage *message,191const char *bus_name);192DBUS_EXPORT193dbus_bool_t dbus_message_has_sender (DBusMessage *message,194const char *unique_bus_name);195DBUS_EXPORT196dbus_bool_t dbus_message_has_signature (DBusMessage *message,197const char *signature);198DBUS_EXPORT199dbus_uint32_t dbus_message_get_serial (DBusMessage *message);200DBUS_EXPORT201void dbus_message_set_serial (DBusMessage *message,202dbus_uint32_t serial);203DBUS_EXPORT204dbus_bool_t dbus_message_set_reply_serial (DBusMessage *message,205dbus_uint32_t reply_serial);206DBUS_EXPORT207dbus_uint32_t dbus_message_get_reply_serial (DBusMessage *message);208209DBUS_EXPORT210void dbus_message_set_auto_start (DBusMessage *message,211dbus_bool_t auto_start);212DBUS_EXPORT213dbus_bool_t dbus_message_get_auto_start (DBusMessage *message);214215DBUS_EXPORT216dbus_bool_t dbus_message_get_path_decomposed (DBusMessage *message,217char ***path);218219DBUS_EXPORT220dbus_bool_t dbus_message_append_args (DBusMessage *message,221int first_arg_type,222...);223DBUS_EXPORT224dbus_bool_t dbus_message_append_args_valist (DBusMessage *message,225int first_arg_type,226va_list var_args);227DBUS_EXPORT228dbus_bool_t dbus_message_get_args (DBusMessage *message,229DBusError *error,230int first_arg_type,231...);232DBUS_EXPORT233dbus_bool_t dbus_message_get_args_valist (DBusMessage *message,234DBusError *error,235int first_arg_type,236va_list var_args);237238DBUS_EXPORT239dbus_bool_t dbus_message_contains_unix_fds (DBusMessage *message);240241DBUS_EXPORT242void dbus_message_iter_init_closed (DBusMessageIter *iter);243DBUS_EXPORT244dbus_bool_t dbus_message_iter_init (DBusMessage *message,245DBusMessageIter *iter);246DBUS_EXPORT247dbus_bool_t dbus_message_iter_has_next (DBusMessageIter *iter);248DBUS_EXPORT249dbus_bool_t dbus_message_iter_next (DBusMessageIter *iter);250DBUS_EXPORT251char* dbus_message_iter_get_signature (DBusMessageIter *iter);252DBUS_EXPORT253int dbus_message_iter_get_arg_type (DBusMessageIter *iter);254DBUS_EXPORT255int dbus_message_iter_get_element_type (DBusMessageIter *iter);256DBUS_EXPORT257void dbus_message_iter_recurse (DBusMessageIter *iter,258DBusMessageIter *sub);259DBUS_EXPORT260void dbus_message_iter_get_basic (DBusMessageIter *iter,261void *value);262DBUS_EXPORT263int dbus_message_iter_get_element_count(DBusMessageIter *iter);264265#ifndef DBUS_DISABLE_DEPRECATED266/* This function returns the wire protocol size of the array in bytes,267* you do not want to know that probably268*/269DBUS_EXPORT270DBUS_DEPRECATED int dbus_message_iter_get_array_len (DBusMessageIter *iter);271#endif272DBUS_EXPORT273void dbus_message_iter_get_fixed_array (DBusMessageIter *iter,274void *value,275int *n_elements);276277278DBUS_EXPORT279void dbus_message_iter_init_append (DBusMessage *message,280DBusMessageIter *iter);281DBUS_EXPORT282dbus_bool_t dbus_message_iter_append_basic (DBusMessageIter *iter,283int type,284const void *value);285DBUS_EXPORT286dbus_bool_t dbus_message_iter_append_fixed_array (DBusMessageIter *iter,287int element_type,288const void *value,289int n_elements);290DBUS_EXPORT291dbus_bool_t dbus_message_iter_open_container (DBusMessageIter *iter,292int type,293const char *contained_signature,294DBusMessageIter *sub);295DBUS_EXPORT296dbus_bool_t dbus_message_iter_close_container (DBusMessageIter *iter,297DBusMessageIter *sub);298DBUS_EXPORT299void dbus_message_iter_abandon_container (DBusMessageIter *iter,300DBusMessageIter *sub);301302DBUS_EXPORT303void dbus_message_iter_abandon_container_if_open (DBusMessageIter *iter,304DBusMessageIter *sub);305306DBUS_EXPORT307void dbus_message_lock (DBusMessage *message);308309DBUS_EXPORT310dbus_bool_t dbus_set_error_from_message (DBusError *error,311DBusMessage *message);312313314DBUS_EXPORT315dbus_bool_t dbus_message_allocate_data_slot (dbus_int32_t *slot_p);316DBUS_EXPORT317void dbus_message_free_data_slot (dbus_int32_t *slot_p);318DBUS_EXPORT319dbus_bool_t dbus_message_set_data (DBusMessage *message,320dbus_int32_t slot,321void *data,322DBusFreeFunction free_data_func);323DBUS_EXPORT324void* dbus_message_get_data (DBusMessage *message,325dbus_int32_t slot);326327DBUS_EXPORT328int dbus_message_type_from_string (const char *type_str);329DBUS_EXPORT330const char* dbus_message_type_to_string (int type);331332DBUS_EXPORT333dbus_bool_t dbus_message_marshal (DBusMessage *msg,334char **marshalled_data_p,335int *len_p);336DBUS_EXPORT337DBusMessage* dbus_message_demarshal (const char *str,338int len,339DBusError *error);340341DBUS_EXPORT342int dbus_message_demarshal_bytes_needed (const char *str,343int len);344345DBUS_EXPORT346void dbus_message_set_allow_interactive_authorization (DBusMessage *message,347dbus_bool_t allow);348349DBUS_EXPORT350dbus_bool_t dbus_message_get_allow_interactive_authorization (351DBusMessage *message);352353/**354* Clear a variable or struct member that contains a #DBusMessage.355* If it does not contain #NULL, the message that was previously356* there is unreferenced with dbus_message_unref().357*358* This is very similar to dbus_clear_connection(): see that function359* for more details.360*361* @param pointer_to_message A pointer to a variable or struct member.362* pointer_to_message must not be #NULL, but *pointer_to_message363* may be #NULL.364*/365static inline void366dbus_clear_message (DBusMessage **pointer_to_message)367{368_dbus_clear_pointer_impl (DBusMessage, pointer_to_message,369dbus_message_unref);370}371372/** @} */373374DBUS_END_DECLS375376#endif /* DBUS_MESSAGE_H */377378379