{"shas":[["49ba72291b348ee5e1ed8597c52ea0cc79342ebd","8bc3d7d1655f286e252fd6c3ce36696075e010c0@gmail.com","Initial request module added\n\n    This module exposes a new interface for handling request packets; it is\n    intended to substantially replace the existing packetparser.\n\n    Instead of consuming a list of PacketField objects as data is read from a\n    buffer, the requests module provides a single class, Request. To read a\n    packet from the client:\n\n     - consume one byte from your network buffer to get the packet type\n     - call the factory method Request::create(type) to get a packet object\n     - call that object's read(streambuf&) method with the rest of the buffer\n        - if its return value is 0, the buffer contained enough to fill out\n          the request object, and the request has already been dispatched\n        - if the return value is > 0, get more data into the buffer, and\n          then call read again, etc.\n\n    Like the original packetparser, this works well with asynchronous network\n    reading with boost::asio; this approach just consolidates packet layout\n    and dispatch behavior into one convenient place, so that defining a new\n    packet type only requires changing one file.","Trip Volpe"]],"ref":"refs/heads/parser_rewrite","size":1,"head":"49ba72291b348ee5e1ed8597c52ea0cc79342ebd","push_id":32430272}