Commit Graph

76 Commits

Author SHA1 Message Date
akwizgran
5d000b62f8 Removed Writer.close(). 2011-07-22 18:08:05 +01:00
akwizgran
fe58fb4c30 Fixed more unit tests. 2011-07-22 17:57:25 +01:00
akwizgran
e7f106a77f Fixed unit tests. 2011-07-22 17:52:02 +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
b5220b096a Message timestamp should have TIMESTAMP type. 2011-07-21 11:52:39 +01:00
akwizgran
b4bf662b3e Unit tests for HeaderReader. 2011-07-21 10:58:42 +01:00
akwizgran
159b09e12a Marked unused classes for removal if they're not used later. 2011-07-21 10:21:20 +01:00
akwizgran
5843f38803 Unit tests for BatchReader. 2011-07-21 10:14:23 +01:00
akwizgran
06ae0e0783 Use mocks for test objects with no side-effects. 2011-07-20 18:38:05 +01:00
akwizgran
f727420838 Removed signatures from headers and bundles, since the transport's
authentication will make them redundant.
2011-07-20 18:33:06 +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
30d7a0f916 Defined which protocol objects require user-defined tags. 2011-07-20 14:45:56 +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
a9e7cbd05c Every encoded object should include its identifying tag. 2011-07-19 14:21:07 +01:00
akwizgran
ff984c69fb Messages are no longer encoded as raw byte arrays. 2011-07-19 14:01:33 +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
8fc97157d3 Fun fact: it's never worth writing a length as an int8. 2011-07-18 16:17:01 +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
308a7017be Check that EOF occurs when expected. 2011-07-15 20:23:59 +01:00
akwizgran
e8fd3ab7a3 Added DroidSansFallback font for platforms without CJK fonts installed. 2011-07-15 04:37:26 -04:00
akwizgran
4d8641e590 Changed Eclipse project name to match repo name. 2011-07-14 23:12:27 +01:00
akwizgran
e25b7353ba Only check the beginnings of font names, since the exact names vary by
platform.
2011-07-14 21:39:04 +01:00
akwizgran
af6c9a9706 Upgraded to JUnit 4.9b3 for a Java 1.5 compatibility bugfix. 2011-07-14 21:26:23 +01:00
akwizgran
62d69b6fb5 Don't use FileUtils.getBriarDirectory() in tests. 2011-07-14 20:42:41 +01:00
akwizgran
065b6e496f Don't use the real Briar directory for unit tests. 2011-07-14 20:02:47 +01:00
akwizgran
acb7228df9 Updated the H2 jar to a version that hopefully works on OSX 10.4 (since it was built there). 2011-07-14 19:39:01 +01:00
akwizgran
b41465c2da Use commons-io to measure free space. 2011-07-14 19:21:16 +01:00
akwizgran
cea8a3a843 IO, IO, it's off to work we go. 2011-07-14 19:15:40 +01:00
akwizgran
4d4b540387 Java 1.5 compatibility changes (for OSX 10.4). We depend on commons-io for a single method... might be worth copying the source into FileUtils if the license permits. 2011-07-14 19:12:44 +01:00
akwizgran
fcedc34d10 Don't store subscription or transport updates that are older than those already received. Also some small changes to DatabaseComponent impls for readability. 2011-07-14 13:53:13 +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
d4382fd232 Replaced clearSubscriptions() and addSubscription() with setSubscriptions(). 2011-07-14 09:52:05 +01:00
akwizgran
a121dcdda8 New retransmission mechanism, which does away with the need for bundle IDs and should cope better with high bandwidth-delay product links. 2011-07-14 09:39:15 +01:00
akwizgran
d889a08cf4 Guice stuff. 2011-07-13 17:05:25 +01:00
akwizgran
48359ec478 Updated buildfile for unit tests. 2011-07-13 16:46:21 +01:00
akwizgran
e13b0437c3 Rewrote the bundle reading and writing code to eliminate copying. Signatures and digests are now calculated on the fly as the data is read or written. This is a little bit tricky in the case of reading because ReaderImpl uses a lookahead byte, so the signature and message digest need to lag one byte behind. 2011-07-13 16:39:31 +01:00
akwizgran
70c698ca9d Batch and header builders should set the length to include the signature. 2011-07-12 20:51:45 +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
22a67cc0d2 Message parser and encoder. 2011-07-12 18:41:08 +01:00
akwizgran
2af6f19476 Check the return value from Signature.verify(). *cough* 2011-07-12 17:08:31 +01:00
akwizgran
3d549ea6ac Builders for incoming and outgoing headers and batches. The protocol and serial components can now be used to serialise, sign, deserialise and verify real bundles (except for message parsing). 2011-07-12 16:50:20 +01:00
akwizgran
e0509db45d Protocol refactoring. Each bundle now consists of a signed header and zero or more signed batches. There is no overall signature on the bundle, since the bundle's contents may need to be processed before the entire bundle has been read. The protocol does not prevent an adversary from removing batches from a bundle, reordering batches, moving them from one bundle to another, etc. However, since each batch is signed and acknowledged independently, no such guarantees are required. Bundle IDs will go away when the retransmission mechanism is changed. 2011-07-12 12:55:46 +01:00
akwizgran
4977695a79 Refactored readers and writers. 2011-07-12 11:28:26 +01:00
akwizgran
4f5eb21180 Builders for batches and bundles. 2011-07-11 12:25:04 +01:00
akwizgran
51e371f7ca Added start/end methods for writing indefinite lists and maps. 2011-07-11 10:07:01 +01:00
akwizgran
63f1caebac Iterators throw FormatRuntimeException if a FormatException occurs, or RuntimeException if an IO error occurs. Reduced visibility of impl classes. 2011-07-10 22:42:38 +01:00
akwizgran
0f4ffe9fbc Added type-safe accessors and iterator accessors for lists and maps. 2011-07-10 18:31:18 +01:00