|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6.1 05/11] libxl_qmp: Implementation of libxl__ev_qmp_*
(I finally remembered to drop the message-id from the CC header...)
Anthony PERARD writes ("Re: [PATCH v6.1 05/11] libxl_qmp: Implementation of
libxl__ev_qmp_*"):
> Here is a simpler comment that is true:
> !disconnected -> same state
>
> Even if in this function ev_fd is modified, it needs to be Active on
> entry, and stay Active on return. But just saying that qmp_state needs
> to be different than disconnected is enough.
LGTM.
> > Does it change the state to a new one ? Are the old and new states
> > pure states as described in the state table, or are they
> > half-transitioned ? (More on this below.)
>
> They are half-transitioned, here is a new comments:
>
> on entry: connecting/connected but with `msg` free
> on return: same state but with `msg` set
LGTM.
> > But assuming that what you write here in your proposed comment is
> > true, ...
> >
> > > State transition
> > > connected -> waiting_reply
> > > * -> state unchange
> > > on error: disconnected
> > > The state of the transmiting buffer will be changed.
> >
> > ... this looks good.
>
> Do I need to say here and everywhere else that on error the new state
> isn't really disconnected, and that the ev_qmp needs to be cleaned?
> On one hand, saying that the new state is disconnected means that the
> ev_qmp functions that only deal with !disconnected, but on the other,
> the caller still need to call _dispose.
I think you are saying you can leave your ev_qmp in a state like
disconnected, but with things allocated. Let us call that state
`broken' (in internal nomenclature).
But that state `broken' does not correspond to any of your public
states. So your API document does not match the code.
You need to either change the API to document this state as a public
Broken state, or arrange for every ev_qmp-internal function to clean
it up appropriately before control passes outside the ev_qmp
implementation.
It is probably easier to introduce the new public Broken state.
As for the commentary: if you prefer not to document the `error ->
Broken' transition next to each function, you can write a general
statement in the internal design. Eg, `for any internal function
which returns an error code, the state on error return will be Broken,
unless otherwise stated'. Or something.
Thanks,
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |