> Sent: Tuesday, March 05, 2019 at 11:42 PM
> From: "Thiago Macieira" <thiago.macie...@intel.com>
> To: interest@qt-project.org
> Subject: Re: [Interest] CBOR Questions
>
> On Tuesday, 5 March 2019 11:09:52 PST Jason H wrote:
> > It seems the simplest, most reliable way to implement complete reads is to
> > serialize the QByteArray data in a QDataStream. Unfortunately it looks like
> > CBOR types do not have QDataStream support? If I were to request anything
> > in terms of new API that would probably be it.
> 
> The simplest is to use the QCborValue::fromCbor overload that takes a 
> QByteArray (your buffer) and QCborParserError. Every time you receive data, 
> you try to parse and then you check the error
>  - if it's QCborError::EndOfFile, wait for more data
>  - if it's QCborError::NoError, remove "offset" bytes from the beginning of 
>    the buffer and process the loaded map
>  - if it's anything else, give up

That seems extremely CPU wasteful. While a QDataStream would know exactly when 
all the bytes are there and would parse the object in one go. 

But short of that, it seems maybe like we need a API that has update() like a 
Hashing algorithm, and a way to return a list of top-level objects with a 
function that much implements the loop with the logic you expressed. 

I'm not a fan of keep "trying until it works". Such protocols are never good. 
HTTP has content-length, or chunked encoding, but there's no "keep trying until 
it works" header. I realize this is more an issue with the CBOR standard not 
having a top-level item sentinel, and not a Qt implementation thing. 
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to