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));
331 for (
MessageIter &from = *
this; !from.at_end(); ++from)
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_bool_t ret = dbus_message_iter_open_container
351 (DBusMessageIter *) & (to.
_iter),
353 (from.type() == DBUS_TYPE_VARIANT || from.type() == DBUS_TYPE_ARRAY) ? sig : NULL,
354 (DBusMessageIter *) & (to_container.
_iter)
379 if (
_pvt->msg && incref) dbus_message_ref(
_pvt->msg);
385 dbus_message_ref(
_pvt->msg);
390 dbus_message_unref(
_pvt->msg);
397 dbus_message_unref(
_pvt->msg);
399 dbus_message_ref(
_pvt->msg);
413 va_start(vl, first_type);
415 bool b = dbus_message_append_args_valist(
_pvt->msg, first_type, vl);
423 dbus_message_append_args(
_pvt->msg, DBUS_TYPE_INVALID);
428 return dbus_message_get_type(
_pvt->msg);
433 return dbus_message_get_serial(
_pvt->msg);
438 return dbus_message_get_reply_serial(
_pvt->msg);
443 return dbus_message_set_reply_serial(
_pvt->msg, s);
448 return dbus_message_get_sender(
_pvt->msg);
453 return dbus_message_set_sender(
_pvt->msg, s);
458 return dbus_message_get_destination(
_pvt->msg);
463 return dbus_message_set_destination(
_pvt->msg, s);
468 return type() == DBUS_MESSAGE_TYPE_ERROR;
473 return dbus_message_is_signal(
_pvt->msg, interface, member);
479 dbus_message_iter_init_append(
_pvt->msg, (DBusMessageIter *) & (iter.
_iter));
486 dbus_message_iter_init(
_pvt->msg, (DBusMessageIter *) & (iter.
_iter));
495 _pvt->msg = dbus_message_new(DBUS_MESSAGE_TYPE_ERROR);
500 _pvt->msg = dbus_message_new_error(to_reply.
_pvt->msg,
name, message);
505 return dbus_message_is_error(
_pvt->msg, m.
name());
510 return dbus_message_get_error_name(
_pvt->msg);
515 return dbus_message_set_error_name(
_pvt->msg, n);
523 _pvt->msg = dbus_message_new(DBUS_MESSAGE_TYPE_SIGNAL);
539 return dbus_message_get_interface(
_pvt->msg);
544 return dbus_message_set_interface(
_pvt->msg, i);
549 return dbus_message_get_member(
_pvt->msg);
554 return dbus_message_set_member(
_pvt->msg, m);
559 return dbus_message_get_path(
_pvt->msg);
565 dbus_message_get_path_decomposed(
_pvt->msg, &p);
571 return dbus_message_set_path(
_pvt->msg, p);
579 _pvt->msg = dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL);
584 _pvt->msg = dbus_message_new_method_call(dest,
path, iface, method);
594 return dbus_message_get_interface(
_pvt->msg);
599 return dbus_message_set_interface(
_pvt->msg, i);
604 return dbus_message_get_member(
_pvt->msg);
609 return dbus_message_set_member(
_pvt->msg, m);
614 return dbus_message_get_path(
_pvt->msg);
620 dbus_message_get_path_decomposed(
_pvt->msg, &p);
626 return dbus_message_set_path(
_pvt->msg, p);
631 return dbus_message_get_signature(
_pvt->msg);
644 return dbus_message_get_signature(
_pvt->msg);
char ** path_split() const
bool operator==(const CallMessage &) const
const char * member() const
const char * signature() const
const char * path() const
const char * interface() const
const char * name() const
bool operator==(const ErrorMessage &) const
signed long long get_int64()
void copy_data(MessageIter &to)
bool append_byte(unsigned char byte)
bool append_array(char type, const void *ptr, size_t length)
const char * get_string()
unsigned short get_uint16()
DXXAPILOCAL bool append_basic(int type_id, void *value)
unsigned long long get_uint64()
const char * get_signature()
unsigned int get_uint32()
bool append_signature(const char *chars)
MessageIter & operator++()
unsigned char _iter[sizeof(void *) *3+sizeof(int) *11]
MessageIter new_dict_entry()
bool append_double(double d)
bool append_uint32(unsigned int u)
bool append_int16(signed short i)
bool append_path(const char *chars)
bool append_uint64(unsigned long long i)
bool append_int32(signed int i)
bool append_int64(signed long long i)
void close_container(MessageIter &container)
bool append_string(const char *chars)
DXXAPILOCAL void get_basic(int type_id, void *ptr)
bool append_uint16(unsigned short u)
MessageIter new_array(const char *sig)
MessageIter new_variant(const char *sig)
Message(Private *, bool incref=true)
friend class ReturnMessage
bool is_signal(const char *interface, const char *member) const
bool append(int first_type,...)
Message & operator=(const Message &m)
const char * destination() const
const char * sender() const
MessageIter reader() const
const char * signature() const
const char * member() const
const char * interface() const
const char * path() const
SignalMessage(const char *name)
char ** path_split() const
bool operator==(const SignalMessage &) const
static bool is_basic_type(int typecode)
DXXAPI LogFunction debug_log