From: Igor Mammedov <imammedo@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: aliguori@amazon.com, sw@weilnetz.de, mjt@tls.msk.ru,
qemu-devel@nongnu.org, lcapitulino@redhat.com,
blauwirbel@gmail.com, stefanha@redhat.com, afaerber@suse.de,
rth@twiddle.net
Subject: Re: [Qemu-devel] [RFC 0/5] -object/object-add support custom location and 2nd stage initialization
Date: Fri, 10 Jan 2014 15:44:38 +0100 [thread overview]
Message-ID: <20140110154438.4d4fd23b@nial.usersys.redhat.com> (raw)
In-Reply-To: <52CFDBD1.5030705@redhat.com>
On Fri, 10 Jan 2014 12:38:57 +0100
Paolo Bonzini <pbonzini@redhat.com> wrote:
> Il 10/01/2014 12:28, Igor Mammedov ha scritto:
> >> > Regarding the "overloading" of the realize name, I was against it in
> >> > previous discussion and I still am (I was in favor of something like
> >> > UserCreatable and naming the method "complete" or "construct"), but I
> >> > didn't want to sound too negative. :)
> > issue with naming interface as CommandLine or UserCreatable is that, it could
> > be used not only by CLI/user but also it could be used internally. For example
> > see "[PATCH 3/5] virtio_rng: use object_realize interface instead of calling
> > backend API", where default backend is created by frontend.
>
> I see. Yes, with something like UserCreatable, you would not have that
I'm not sure why I wouldn't have that path. It does exactly what you've
just written vvv,
> patch. Instead, UserCreatable's complete method would redirect to the
> backend-specific API.
i.e. it calls cast<UserCreatable>(default_rng).complete() which
redirects to backend specific API, where UserCreatable.complete()
is rng_backend_realize()
>
> BTW, note that UserCreatable's complete method should take a
> UserCreatable (or whatever the name is) as the first parameter, not an
> Object. This would affect that patch, too.
It does, 'void (*realize)(ObjectRealizeInterface *obj, Error **errp);'
call_object_realize_interface(Object *obj,...) is a wrapper
that reduces casting code duplication at call sites since it's used
at more then 1 place.
>
> > how about naming it for what it is: object-2nd-stage-init
>
> That would also work for me (TwoStageConstructable or something like that).
>
> One advantage of UserCreatable is that -object/object_add could check
> for it and reject creation of objects that are not meant for
> command-line instantiation. You could do the same for
> TwoStageConstructable, but it would look weird to define an object as
> two-stage constructable with an empty complete method.
>
> With a name like UserCreatable, instead, it would be quite natural to do
> this:
>
> void user_creatable_complete(UserCreatable *uc, Error **errp)
> {
> UserCreatableClass *ucc = USER_CREATABLE_GET_CLASS(uc);
> if (ucc->complete) {
> ucc->complete(uc, errp);
> }
> }
>
> > neutral object-complementary-interface that could be extended later with
> > another methods
>
> No, we don't want a hodge-podge interface that's basically UserCreatable
> except in the name. :)
I'm fine with UserCreatable, lets wait couple days if there is no objection
or another suggestions and I'll then respin series.
>
> Paolo
next prev parent reply other threads:[~2014-01-10 14:45 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-08 16:09 [Qemu-devel] [RFC 0/5] -object/object-add support custom location and 2nd stage initialization Igor Mammedov
2014-01-08 16:09 ` [Qemu-devel] [PATCH 1/5] object_add: consolidate error handling Igor Mammedov
2014-01-08 16:09 ` [Qemu-devel] [PATCH 2/5] add optional 2nd stage initialization to -object/object-add/object_add commands Igor Mammedov
2014-01-08 16:09 ` [Qemu-devel] [PATCH 3/5] virtio_rng: use object_realize interface instead of calling backend API Igor Mammedov
2014-01-08 16:09 ` [Qemu-devel] [PATCH 4/5] vl.c: -object: handle duplicate 'id' properly Igor Mammedov
2014-01-08 16:09 ` [Qemu-devel] [PATCH 5/5] -object/object-add: use custom default object location if provided Igor Mammedov
2014-01-09 4:35 ` Stefan Hajnoczi
2014-01-10 10:59 ` Igor Mammedov
2014-01-08 16:24 ` [Qemu-devel] [RFC 0/5] -object/object-add support custom location and 2nd stage initialization Paolo Bonzini
2014-01-08 16:45 ` Andreas Färber
2014-01-08 17:00 ` Igor Mammedov
2014-01-08 16:51 ` Igor Mammedov
2014-01-08 17:33 ` Paolo Bonzini
2014-01-10 11:28 ` Igor Mammedov
2014-01-10 11:38 ` Paolo Bonzini
2014-01-10 14:44 ` Igor Mammedov [this message]
2014-01-10 15:40 ` Paolo Bonzini
2014-01-10 15:31 ` Igor Mammedov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140110154438.4d4fd23b@nial.usersys.redhat.com \
--to=imammedo@redhat.com \
--cc=afaerber@suse.de \
--cc=aliguori@amazon.com \
--cc=blauwirbel@gmail.com \
--cc=lcapitulino@redhat.com \
--cc=mjt@tls.msk.ru \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=stefanha@redhat.com \
--cc=sw@weilnetz.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).