30 #include <dbus/dbus.h>
43 return dbus_message_iter_get_arg_type((DBusMessageIter *)&
_iter);
48 return type() == DBUS_TYPE_INVALID;
53 return dbus_message_iter_has_next((DBusMessageIter *)&
_iter);
58 dbus_message_iter_next((DBusMessageIter *)&
_iter);
71 return dbus_message_iter_append_basic((DBusMessageIter *)&
_iter, type_id, value);
76 if (
type() != type_id)
79 dbus_message_iter_get_basic((DBusMessageIter *)
_iter, ptr);
169 unsigned long long u;
211 get_basic(DBUS_TYPE_OBJECT_PATH, &chars);
230 dbus_message_iter_recurse((DBusMessageIter *)&
_iter, (DBusMessageIter *) & (iter.
_iter));
236 return dbus_message_iter_get_signature((DBusMessageIter *)&
_iter);
241 return dbus_message_iter_append_fixed_array((DBusMessageIter *)&
_iter, type, &ptr, length);
246 return dbus_message_iter_get_element_type((DBusMessageIter *)&
_iter);
252 dbus_message_iter_get_fixed_array((DBusMessageIter *)&
_iter, ptr, &length);
258 return dbus_message_iter_get_arg_type((DBusMessageIter *)&
_iter) == DBUS_TYPE_ARRAY;
263 return is_array() && dbus_message_iter_get_element_type((DBusMessageIter *)
_iter) == DBUS_TYPE_DICT_ENTRY;
269 dbus_message_iter_open_container(
270 (DBusMessageIter *)&
_iter, DBUS_TYPE_ARRAY, sig, (DBusMessageIter *) & (arr.
_iter)
278 dbus_message_iter_open_container(
279 (DBusMessageIter *)
_iter, DBUS_TYPE_VARIANT, sig, (DBusMessageIter *) & (var.
_iter)
287 dbus_message_iter_open_container(
288 (DBusMessageIter *)
_iter, DBUS_TYPE_STRUCT, NULL, (DBusMessageIter *) & (stu.
_iter)
296 dbus_message_iter_open_container(
297 (DBusMessageIter *)
_iter, DBUS_TYPE_DICT_ENTRY, NULL, (DBusMessageIter *) & (ent.
_iter)
304 dbus_message_iter_close_container((DBusMessageIter *)&
_iter, (DBusMessageIter *) & (container.
_iter));
335 debug_log(
"copying basic type: %c", from.type());
337 unsigned char value[8];
338 from.get_basic(from.type(), &value);
346 debug_log(
"copying compound type: %c[%s]", from.type(), sig);
349 dbus_message_iter_open_container
351 (DBusMessageIter *) & (to.
_iter),
353 from.type() == DBUS_TYPE_VARIANT ? NULL : sig,
354 (DBusMessageIter *) & (to_container._iter)
375 if (
_pvt->msg && incref) dbus_message_ref(
_pvt->msg);
381 dbus_message_ref(
_pvt->msg);
386 dbus_message_unref(
_pvt->msg);
393 dbus_message_unref(
_pvt->msg);
395 dbus_message_ref(
_pvt->msg);
409 va_start(vl, first_type);
411 bool b = dbus_message_append_args_valist(
_pvt->msg, first_type, vl);
419 dbus_message_append_args(
_pvt->msg, DBUS_TYPE_INVALID);
424 return dbus_message_get_type(
_pvt->msg);
429 return dbus_message_get_serial(
_pvt->msg);
434 return dbus_message_get_reply_serial(
_pvt->msg);
439 return dbus_message_set_reply_serial(
_pvt->msg, s);
444 return dbus_message_get_sender(
_pvt->msg);
449 return dbus_message_set_sender(
_pvt->msg, s);
454 return dbus_message_get_destination(
_pvt->msg);
459 return dbus_message_set_destination(
_pvt->msg, s);
464 return type() == DBUS_MESSAGE_TYPE_ERROR;
469 return dbus_message_is_signal(
_pvt->msg, interface, member);
475 dbus_message_iter_init_append(
_pvt->msg, (DBusMessageIter *) & (iter.
_iter));
482 dbus_message_iter_init(
_pvt->msg, (DBusMessageIter *) & (iter.
_iter));
491 _pvt->msg = dbus_message_new(DBUS_MESSAGE_TYPE_ERROR);
496 _pvt->msg = dbus_message_new_error(to_reply.
_pvt->msg, name, message);
501 return dbus_message_is_error(
_pvt->msg, m.
name());
506 return dbus_message_get_error_name(
_pvt->msg);
511 return dbus_message_set_error_name(
_pvt->msg, n);
519 _pvt->msg = dbus_message_new(DBUS_MESSAGE_TYPE_SIGNAL);
525 _pvt->msg = dbus_message_new_signal(path, interface, name);
535 return dbus_message_get_interface(
_pvt->msg);
540 return dbus_message_set_interface(
_pvt->msg, i);
545 return dbus_message_get_member(
_pvt->msg);
550 return dbus_message_set_member(
_pvt->msg, m);
555 return dbus_message_get_path(
_pvt->msg);
561 dbus_message_get_path_decomposed(
_pvt->msg, &p);
567 return dbus_message_set_path(
_pvt->msg, p);
575 _pvt->msg = dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL);
580 _pvt->msg = dbus_message_new_method_call(dest, path, iface, method);
590 return dbus_message_get_interface(
_pvt->msg);
595 return dbus_message_set_interface(
_pvt->msg, i);
600 return dbus_message_get_member(
_pvt->msg);
605 return dbus_message_set_member(
_pvt->msg, m);
610 return dbus_message_get_path(
_pvt->msg);
616 dbus_message_get_path_decomposed(
_pvt->msg, &p);
622 return dbus_message_set_path(
_pvt->msg, p);
627 return dbus_message_get_signature(
_pvt->msg);
640 return dbus_message_get_signature(
_pvt->msg);
const char * path() const
DXXAPILOCAL bool append_basic(int type_id, void *value)
MessageIter new_array(const char *sig)
MessageIter & operator++()
const char * member() const
const char * path() const
bool operator==(const CallMessage &) const
bool append_path(const char *chars)
const char * interface() const
const char * signature() const
bool append_int16(signed short i)
const char * signature() const
bool append_double(double d)
bool append_byte(unsigned char byte)
MessageIter new_dict_entry()
bool append(int first_type,...)
const char * interface() const
MessageIter reader() const
void copy_data(MessageIter &to)
const char * sender() const
char ** path_split() const
SignalMessage(const char *name)
DXXAPI LogFunction debug_log
const char * destination() const
MessageIter new_variant(const char *sig)
unsigned char _iter[sizeof(void *)*3+sizeof(int)*11]
bool append_signature(const char *chars)
DXXAPILOCAL void get_basic(int type_id, void *ptr)
unsigned long long get_uint64()
bool append_int64(signed long long i)
bool append_string(const char *chars)
char ** path_split() const
unsigned int get_uint32()
ReturnMessage(const CallMessage &callee)
void close_container(MessageIter &container)
bool append_int32(signed int i)
Message & operator=(const Message &m)
static bool is_basic_type(int typecode)
bool is_signal(const char *interface, const char *member) const
bool append_uint16(unsigned short u)
bool append_uint64(unsigned long long i)
signed long long get_int64()
bool operator==(const ErrorMessage &) const
bool operator==(const SignalMessage &) const
const char * name() const
const char * member() const
unsigned short get_uint16()
bool append_uint32(unsigned int u)
const char * get_string()
const char * get_signature()
bool append_array(char type, const void *ptr, size_t length)