static gboolean gkd_secret_item_skeleton_set_property_dbus (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error, gpointer user_data) { GkdSecretItemSkeleton *self = (GkdSecretItemSkeleton *) user_data; GckObject *object; object = secret_objects_lookup_gck_object_for_path (self->objects, sender, object_path, error); if (!object) return FALSE; if (!object_property_set (self->objects, object, property_name, value, error)) { g_object_unref (object); return FALSE; } if (g_strcmp0 (property_name, "Attributes") == 0) { gkd_exported_item_set_attributes (GKD_EXPORTED_ITEM (self), value); } else if (g_strcmp0 (property_name, "Label") == 0) { gkd_exported_item_set_label (GKD_EXPORTED_ITEM (self), g_variant_get_string (value, NULL)); } gkd_secret_objects_emit_item_changed (self->objects, object); g_object_unref (object); return TRUE; }
static void balloon_ccw_stats_set_poll_interval(Object *obj, struct Visitor *v, void *opaque, const char *name, Error **errp) { VirtIOBalloonCcw *dev = opaque; object_property_set(OBJECT(&dev->vdev), v, "guest-stats-polling-interval", errp); }
void object_property_set_qobject(Object *obj, QObject *value, const char *name, Error **errp) { Visitor *v; /* TODO: Should we reject, rather than ignore, excess input? */ v = qobject_input_visitor_new(value, false); object_property_set(obj, v, name, errp); visit_free(v); }
void object_property_set_qobject(struct uc_struct *uc, Object *obj, QObject *value, const char *name, Error **errp) { QmpInputVisitor *mi; mi = qmp_input_visitor_new(value); object_property_set(uc, obj, qmp_input_get_visitor(mi), name, errp); // qq qmp_input_visitor_cleanup(mi); }
Object *user_creatable_add_type(const char *type, const char *id, const QDict *qdict, Visitor *v, Error **errp) { Object *obj; ObjectClass *klass; const QDictEntry *e; Error *local_err = NULL; klass = object_class_by_name(type); if (!klass) { error_setg(errp, "invalid object type: %s", type); return NULL; } if (!object_class_dynamic_cast(klass, TYPE_USER_CREATABLE)) { error_setg(errp, "object type '%s' isn't supported by object-add", type); return NULL; } if (object_class_is_abstract(klass)) { error_setg(errp, "object type '%s' is abstract", type); return NULL; } assert(qdict); obj = object_new(type); visit_start_struct(v, NULL, NULL, 0, &local_err); if (local_err) { goto out; } for (e = qdict_first(qdict); e; e = qdict_next(qdict, e)) { object_property_set(obj, v, e->key, &local_err); if (local_err) { break; } } if (!local_err) { visit_check_struct(v, &local_err); } visit_end_struct(v, NULL); if (local_err) { goto out; } if (id != NULL) { object_property_add_child(object_get_objects_root(), id, obj, &local_err); if (local_err) { goto out; } } user_creatable_complete(USER_CREATABLE(obj), &local_err); if (local_err) { if (id != NULL) { object_property_del(object_get_objects_root(), id, &error_abort); } goto out; } out: if (local_err) { error_propagate(errp, local_err); object_unref(obj); return NULL; } return obj; }
static void cpu_model_from_info(S390CPUModel *model, const CpuModelInfo *info, Error **errp) { const QDict *qdict = NULL; const QDictEntry *e; Visitor *visitor; ObjectClass *oc; S390CPU *cpu; Object *obj; if (info->props) { qdict = qobject_to_qdict(info->props); if (!qdict) { error_setg(errp, QERR_INVALID_PARAMETER_TYPE, "props", "dict"); return; } } oc = cpu_class_by_name(TYPE_S390_CPU, info->name); if (!oc) { error_setg(errp, "The CPU definition \'%s\' is unknown.", info->name); return; } if (S390_CPU_CLASS(oc)->kvm_required && !kvm_enabled()) { error_setg(errp, "The CPU definition '%s' requires KVM", info->name); return; } obj = object_new(object_class_get_name(oc)); cpu = S390_CPU(obj); if (!cpu->model) { error_setg(errp, "Details about the host CPU model are not available, " "it cannot be used."); object_unref(obj); return; } if (qdict) { visitor = qobject_input_visitor_new(info->props); visit_start_struct(visitor, NULL, NULL, 0, errp); if (*errp) { object_unref(obj); return; } for (e = qdict_first(qdict); e; e = qdict_next(qdict, e)) { object_property_set(obj, visitor, e->key, errp); if (*errp) { break; } } if (!*errp) { visit_check_struct(visitor, errp); } visit_end_struct(visitor, NULL); visit_free(visitor); if (*errp) { object_unref(obj); return; } } /* copy the model and throw the cpu away */ memcpy(model, cpu->model, sizeof(*model)); object_unref(obj); }