1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
int
my_com_netsplit_Nih_Test_property_set (NihDBusObject * object,
NihDBusMessage * message,
DBusMessageIter *iter)
{
DBusMessageIter variter;
const char * value_dbus;
char * value;
nih_assert (object != NULL);
nih_assert (message != NULL);
nih_assert (iter != NULL);
/* Recurse into the variant */
if (dbus_message_iter_get_arg_type (iter) != DBUS_TYPE_VARIANT) {
nih_dbus_error_raise_printf (DBUS_ERROR_INVALID_ARGS,
"Invalid arguments to property property");
return -1;
}
dbus_message_iter_recurse (iter, &variter);
/* Demarshal a char * from the message */
if (dbus_message_iter_get_arg_type (&variter) != DBUS_TYPE_STRING) {
nih_dbus_error_raise_printf (DBUS_ERROR_INVALID_ARGS,
"Invalid arguments to property property");
return -1;
}
dbus_message_iter_get_basic (&variter, &value_dbus);
value = nih_strdup (message, value_dbus);
if (! value) {
nih_error_raise_no_memory ();
return -1;
}
dbus_message_iter_next (&variter);
dbus_message_iter_next (iter);
if (dbus_message_iter_get_arg_type (iter) != DBUS_TYPE_INVALID) {
nih_dbus_error_raise_printf (DBUS_ERROR_INVALID_ARGS,
"Invalid arguments to property property");
return -1;
}
/* Call the handler function */
if (my_set_property (object->data, message, value) < 0)
return -1;
return 0;
}
|