Hi,
> > > and complicates both sides unnecessarily.
> >
> > Having headers in the reply allows it to process them in generic code.
> > There is a size header for the reply, so you can parse the stream
> > without knowing what replay to expect. You can use the status field to
> > indicate the payload, simliar to virtio-gpu which has response code
> > OK_NODATA, some OK_$whatpayload and some ERR_$failure codes.
> >
> > You can dispatch based on the response/status code and run *fully*
> > asynchronous without too much trouble.
>
> It's really a different level of complexity than what I needed so far.
That is a bit overboard, no?
All I'm asking for is:
(a) A header field telling what kind of payload has been sent,
for both requests and replies.
(b) A header field telling what size the payload has.
That hardly is a different level of complexity. And that isn't up for
negotiation.
If you absolutely don't want ack all requests, ok. Not sending a reply
in case there is no payload to send back and no error to report is
something I can live with.
> > A properly structed reply allows a different approach in reply
> > processing (see above). But that only works if it is in the protocol
> > right from the start. As add-on feature it can't provide the benefits
> > because the reply parser must be able to handle both protocol variants.
>
> You are asking for a full-blown protocol... could we take DBus as an
> alternative instead?
May I suggest QMP instead?
Seriously: If you want reuse something, just use the vhost-user wire
format. Which is essentially what I'm asking for, plus an additional
flags field in the header.
cheers,
Gerd