[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v4 13/32] libxl_qmp: Connect to QMP socket



On Thu, Aug 02, 2018 at 11:35:53AM +0200, Roger Pau Monné wrote:
> On Fri, Jul 27, 2018 at 03:05:55PM +0100, Anthony PERARD wrote:
> > +typedef enum {
> > +    qmp_state_disconnected = 1,
> > +    qmp_state_connecting,
> > +    qmp_state_greeting,
> > +    qmp_state_capability_negociation,
> > +    qmp_state_connected,
> > +} libxl__qmp_state;
> > +
> 
> I think this should be declared in libxl_types_internal.idl?

I don't know, I kind of wanted the enum to be contained in libxl_qmp.c,
but then I couldn't use the enum type in the struct here.

Also the idl provides more than needed (conversion to string) and make
the names more verbose, by adding libxl__ prefix.

> And (maybe) a description of each state would be helpful for future
> reference?

Yes, but not in libxl_internal.h, the description should be in
libxl_qmp.c as this qmp_state is not part of the API.

> >  struct libxl__ev_qmp {
> >      /* caller should include this in their own struct */
> >      /* caller must fill these in, and they must all remain valid */
> > @@ -427,6 +435,9 @@ struct libxl__ev_qmp {
> >      /* remaining fields are private to libxl_ev_qmp_* */
> >  
> >      int id;
> > +    libxl__carefd *qmp_cfd;
> > +    libxl__ev_fd qmp_efd;
> > +    libxl__qmp_state qmp_state;
> >  };
> >  
> >  
> > diff --git a/tools/libxl/libxl_qmp.c b/tools/libxl/libxl_qmp.c
> > index c5e05e5679..96a347dd3b 100644
> > --- a/tools/libxl/libxl_qmp.c
> > +++ b/tools/libxl/libxl_qmp.c
> > +out:
> > +    libxl__carefd_close(ev->qmp_cfd);
> > +    ev->qmp_cfd = NULL;
> > +    return rc;
> > +}
> > +
> > +
> 
> Double newline.

I like space, it gives some separations before the next big chunk of
code.

> > +/*
> > + * libxl__ev_qmp_*
> > + */
> > +
> > +void libxl__ev_qmp_init(libxl__ev_qmp *ev)
> > +{
> > +    ev->id = -1;
> > +
> > +    ev->qmp_cfd = NULL;
> > +    libxl__ev_fd_init(&ev->qmp_efd);
> > +    ev->qmp_state = qmp_state_disconnected;
> > +}
> > +
> > +int libxl__ev_qmp_send(libxl__gc *gc, libxl__ev_qmp *ev,
> > +                       const char *cmd, libxl__json_object *args)
> > +{
> > +    int rc;
> > +
> > +    LOGD(DEBUG, ev->domid, " ev %p, cmd '%s'", ev, cmd);
> > +
> > +    /* Connect to QEMU if not already connected */
> > +    rc = qmp_ev_connect(gc, ev);
> > +
> > +    return rc;
> 
> You can get rid of rc and just use:
> 
> return qmp_ev_connect(gc, ev);

Will do. (And introduce the rc in the following patches.)

> > +}
> > +
> > +void libxl__ev_qmp_dispose(libxl__gc *gc, libxl__ev_qmp *ev)
> > +{
> > +    LOGD(DEBUG, ev->domid, " ev %p", ev);
> > +
> > +    libxl__ev_fd_deregister(gc, &ev->qmp_efd);
> > +    libxl__carefd_close(ev->qmp_cfd);
> > +    ev->qmp_cfd = NULL;
> 
> No need to set qmp_cfd to NULL if you call _init afterwards.

Will not do then.

> > +
> > +    libxl__ev_qmp_init(ev);
> 
> Thanks, Roger.

Thanks Roger,

-- 
Anthony PERARD

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.