Commit Graph

30 Commits

Author SHA1 Message Date
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
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
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
akwizgran
4deb52478d Protocol Buffers will be used for the wire protocol. As a quick test it's now used to serialize transport details when creating an invitation. 2011-07-07 22:10:02 +01:00
akwizgran
7fb589075d Added support for local transport details. Each bundle contains the sender's latest transport details. 2011-07-06 19:07:10 +01:00
akwizgran
b548820f77 Transport details for contacts can be stored in the database (these are arbitrary key/value pairs that describe how to reach the contact using a particular transport). Moved the generic ContactId and Rating classes out of the database package of the API. 2011-07-06 16:50:01 +01:00
akwizgran
9fbf0f21de Contact IDs are now auto-generated. 2011-07-06 14:53:35 +01:00
akwizgran
5d768a5718 DatabaseComponent throws an exception instead of returning silently if a contact is removed during an operation involving that contact. More unit tests. 2011-07-05 18:15:44 +01:00
akwizgran
13b3d4cc03 Unit tests and bugfixes for DatabaseComponent. Merged code from various unique ID classes into a common superclass. 2011-07-05 16:58:44 +01:00
akwizgran
f97393f160 Unit tests, refactoring and bugfixes for the database. Replies to messages in
other groups no longer affect sendability, which makes it safe to delete all
messages from a group when unsubscribing.
2011-07-05 14:16:29 +01:00
akwizgran
eb752ada62 Factored out the database cleaner. 2011-07-04 18:11:27 +01:00
akwizgran
390b316724 Unit tests for H2Database. 2011-07-04 16:06:10 +01:00
akwizgran
0ed2a7c9e7 Javadocs and unit tests. 2011-07-01 12:07:00 +01:00
akwizgran
b29a024c2a Changed "neighbour" to "contact" throughout (messy, but it's only going to get messier later). Also reordered some methods in DatabaseComponent impls. 2011-06-29 13:16:33 +01:00
akwizgran
ed0174a91b Added the ability to remove neighbours from the database (untested). 2011-06-29 12:54:00 +01:00
akwizgran
b2532708d3 Removed name from startTransaction(), merged the two batch-removal methods. 2011-06-28 17:52:26 +01:00
akwizgran
82fb860ab8 More javadocs. 2011-06-27 16:11:59 +01:00
akwizgran
5281113f24 Javadocs and unit tests, God help me. 2011-06-27 13:01:31 +01:00
akwizgran
dad1b4fcb9 More unit tests. 2011-06-22 16:58:03 +01:00
akwizgran
eb1c855278 Javadocs and unit tests. Woo! 2011-06-22 11:42:33 +01:00
akwizgran
cd4f99df3d Initial commit with new directory structure. 2011-06-21 18:01:28 +01:00