Commit Graph

17 Commits

Author SHA1 Message Date
akwizgran 5be9d953ee Use fail() instead of assertTrue(false). 2011-08-03 21:19:04 +01:00
akwizgran c90a18278b Allow a maximum length to be specified when reading strings or byte
arrays, check it before allocating the buffer, and always specify the
maximum length when reading untrusted data - otherwise
CountingConsumer will reject the packet, but not before we've tried to
allocate a buffer of the specified size (up to 2 GB).
2011-08-03 19:29:30 +01:00
akwizgran c98c968b87 Removed unnecessary Raw interface. 2011-07-24 17:47:17 +01:00
akwizgran a573e87c04 ReaderImpl now maintains either one or two bytes of lookahead,
depending on the value of the first byte, so that an object's initial
tag is included in the data seen by the ObjectReader. Digests and
signatures can therefore be calculated over objects by their readers
without any risk of ambiguity.
2011-07-22 17:39:59 +01:00
akwizgran 45b4bef348 Catch ClassCastException when the encountered type doesn't match the
expected type, and re-throw as FormatException.
2011-07-20 15:07:17 +01:00
akwizgran 6b61cfa1bc Factored out header reading and batch reading into separate classes
for easier testing.
2011-07-19 19:13:27 +01:00
akwizgran fb528a85ad Nested user-defined objects (and collections of them) can now be read
by registering ObjectReaders with the Reader.
2011-07-19 17:17:45 +01:00
akwizgran 30fc6c1a92 Defined some user-defined tags for protocol elements. Currently they're just adding redundancy, but in future they'll be used for parsing nested elements. 2011-07-18 17:44:18 +01:00
akwizgran 427142ae51 Read and write user-defined tags. 2011-07-18 16:46:03 +01:00
akwizgran 7a4171f3ba A more efficient encoding for short strings, raws, lists and maps. Now we can encode a list of three small integers in 4 bytes like MessagePack does, should that ever turn out to be useful. 2011-07-18 16:06:09 +01:00
akwizgran 0bc8a31749 Cleaned up serial and protocol packages in preparation for user-defined types. 2011-07-18 14:33:41 +01:00
akwizgran 836d30f6df Retrieve messages from the database in raw form to avoid creating unnecessary short-lived objects. Added timestamps to headers. 2011-07-14 12:01:35 +01:00
akwizgran c3643a037b Added accessors for the amount of raw data read and written by readers and writers - this fixes a fixme in MessageParserImpl. 2011-07-12 20:27:37 +01:00
akwizgran 4977695a79 Refactored readers and writers. 2011-07-12 11:28:26 +01:00
akwizgran 51e371f7ca Added start/end methods for writing indefinite lists and maps. 2011-07-11 10:07:01 +01:00
akwizgran 0f4ffe9fbc Added type-safe accessors and iterator accessors for lists and maps. 2011-07-10 18:31:18 +01:00
akwizgran 1f5e52c31b Modifying Protocol Buffers (or Thrift, or MessagePack, or any of the free ASN.1 implementations I could find) to support length constraints was more work than writing a custom serialisation format, so I wrote a custom format. 2011-07-10 14:44:15 +01:00