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