[tpm] delimiting/reading YAML documents across sockets

Stuart Watt stuart at morungos.com
Tue Jul 9 07:39:50 PDT 2013

Personally, I would suggest JSON, or even XML. YAML is fairly complex (it's advantage is human readability, not performance), and I'd suggest too complex, for network data. JSON, especially with JSON::XS, is fast, east, and handles newlines fine, apart from the packet-detection issue. 

I'd agree that separating packetizing from encoding is ideal, but if you don't want to do that, you could try a streaming parser, e.g., JSON::Streaming::Reader. For sending, you can then just dump the data out. For receiving, in theory this gives you an event-based API which might be a more natural fit. XML uses technique much more -- it's the basis for XMPP for example. I use streaming XML a lot for handling very large, even continuous, data, and it's not really too bad, although it does push some of the encoding/decoding back to you. 

Using indentation IMO makes the point of a streaming parser very dubious, which is another reason if you want to do streaming event-based reading to use either JSON, or even XML::Stream for reading and XML::Writer for sending. Personally, I doubt if there is ever going to be a safe application for streaming YAML. 

All the best

On 2013-07-08, at 3:25 PM, Fulko Hew wrote:

> [PS. The same questions would apply to anyone who suggests
>  JSON as an alternative.]

Stuart Watt
stuart at morungos.com / twitter.com/morungos

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/toronto-pm/attachments/20130709/186ae5e1/attachment.html>

More information about the toronto-pm mailing list