Commit Graph

158 Commits

Author SHA1 Message Date
akwizgran
d7a417f36d Validate the decrypted IV before creating a reader/writer. 2011-10-18 15:58:10 +01:00
akwizgran
2f457162a5 Attach the affected contact IDs to subscription update events. 2011-10-17 23:24:23 +01:00
akwizgran
ec56b12384 Converted database events from an enum to classes to allow them to
carry data.
2011-10-17 22:47:38 +01:00
akwizgran
89001e4c91 Double-check the initiator flag and transport ID of incoming
connections, and invert the flag for the responder's side.
2011-10-15 14:15:25 +01:00
akwizgran
0ef1fcb686 De-uglified some code and moved two API classes. 2011-10-14 21:49:58 +01:00
akwizgran
0d11553134 StreamConnectionFactory and ConnectionDispatcherImpl (untested). 2011-10-14 21:07:49 +01:00
akwizgran
bd91e7ebf3 Renamed a DB event. 2011-10-14 19:49:47 +01:00
akwizgran
e00e12d473 Call the listeners if a new ack might need to be sent. 2011-10-14 18:29:14 +01:00
akwizgran
d48c7b6900 Converted {Incoming,Outgoing}BatchConnection into Runnables.
Also changed the dispose() method of readers/writers/connections to
swallow any exceptions that occur, since the caller can't do anything
except log them.
2011-10-14 16:14:29 +01:00
akwizgran
55182528cf Q: What does the plugin manager do? A: It manages plugins. 2011-10-14 14:49:29 +01:00
akwizgran
aabe72bfd7 Plugin factories. 2011-10-12 17:26:05 +01:00
akwizgran
64e2d7bca9 Refactoring: shorter class names. 2011-10-12 17:25:37 +01:00
akwizgran
3a07d1b882 Plugins don't need their own copies of configs and properties. 2011-10-12 16:52:39 +01:00
akwizgran
631f4e74b5 Nudge the database API in the direction of sanity. 2011-10-11 19:08:10 +01:00
akwizgran
a49a95347f Use dedicated classes for transport properties and configs. 2011-10-11 17:28:47 +01:00
akwizgran
68b82ae826 Retrieve all remote transports from the DB in a single call. 2011-10-10 22:35:46 +01:00
akwizgran
4059fbf863 Moved plugin API from transport package to plugins package and merged
transport subpackages.
2011-10-10 16:18:48 +01:00
akwizgran
125ae1b640 Always call the callback outside the plugin's lock. 2011-10-08 13:13:28 +01:00
akwizgran
5f40015ec2 Moved callback initialisation from start() to constructor so it can be
accessed outside the lock.
2011-10-08 12:46:35 +01:00
akwizgran
a3a5ebc14f Removed unused exceptions. Also disabled output for ant tests. 2011-10-08 12:27:13 +01:00
akwizgran
c08f6c4d1e Merged transports' finish() and dispose() methods. 2011-10-06 19:00:33 +01:00
akwizgran
f8ca06f79d Changed callback arguments to varargs and renamed a method. 2011-10-06 11:13:19 +01:00
akwizgran
6737e4ddfb Merged common methods of BatchTransportPlugin and
StreamTransportPlugin into a superclass.
2011-10-06 09:22:56 +01:00
akwizgran
b54668c50b Renamed InvalidTransportException -> InvalidPropertiesException. 2011-10-06 09:18:13 +01:00
akwizgran
45fd4c9060 Simple TCP socket plugin (untested). 2011-10-06 09:17:22 +01:00
akwizgran
80cba1e7f7 Added finish() methods to transport readers/writers, and added a
readerFinished() callback method to FilePlugin.
2011-10-05 18:59:30 +01:00
akwizgran
3ffb56bf12 Factored ConnectionRecogniser out of transport plugins. 2011-10-05 18:48:10 +01:00
akwizgran
f6df333796 Changed drive monitors to use callbacks rather than blocking. 2011-10-05 16:11:18 +01:00
akwizgran
11a6858c46 Updated transport plugin API. 2011-10-04 17:49:18 +01:00
akwizgran
74ca71d9c1 Check for symlinks when deleting directories. Allow Database.open()
and close() to throw IOExceptions as well as DatabaseExceptions.
2011-10-03 18:35:18 +01:00
akwizgran
72b594d270 Type-safe transport IDs. 2011-09-30 12:52:29 +01:00
akwizgran
7190509ede Use numeric IDs rather than names to identify transports. 2011-09-29 15:40:09 +01:00
akwizgran
2edb18aee0 Store outgoing connection numbers in the database. 2011-09-28 19:24:22 +01:00
akwizgran
a8b96f11fd Added Consumer support to Writer, to avoid redundant copying. 2011-09-28 18:47:24 +01:00
akwizgran
a1b664b639 More refactoring to connect ConnectionRecogniser to ConnectionReader.
Added TestDatabaseModule so tests can specify their own DB
configuration. The modules are currently too tightly coupled - see
whether any dependencies can be removed.
2011-09-28 14:21:38 +01:00
akwizgran
4aff0c4f88 Refactored transport component and renamed WritersModule.
The goal of the refactoring was to clean up the dependencies of
IncomingBatchConnection and OutgoingBatchConnection.
2011-09-27 19:21:44 +01:00
akwizgran
98ab523092 Database refactoring to fix injection problems. 2011-09-23 18:52:56 +01:00
akwizgran
b470afb4ef Added DatabaseComponent.setSeen() for handling requests.
Also moved IO out of the lock in receiveOffer().
2011-09-23 16:06:14 +01:00
akwizgran
7c6e0c349c Extracted constants from DatabaseComponent interface. 2011-09-23 15:33:41 +01:00
akwizgran
b675c38953 Don't do IO while holding database locks. 2011-09-23 12:55:23 +01:00
akwizgran
09971c8460 Implemented incoming and outgoing batch connections (untested). 2011-09-22 16:26:06 +01:00
akwizgran
b65d6631f1 Removed writer's count of bytes written and renamed a method. 2011-09-21 18:22:14 +01:00
akwizgran
eba6884281 Javadocs. 2011-09-21 18:09:56 +01:00
akwizgran
8dd7ec93e7 DatabaseComponent.generateAck() now returns a boolean.
The return value indicates whether any batch IDs were written.
AckWriter.finish() and Database.removeBatchesToAck() are only called
if at least one batch ID was written.
2011-09-21 17:51:17 +01:00
akwizgran
10c3b21726 Expose the encryption and authentication overhead without breaking
encapsulation.

This should allow callers to calculate maximum packet sizes without
knowing the details of the transport protocol.
2011-09-21 15:22:25 +01:00
akwizgran
7e58b25618 Allow the max packet length to be reduced from the default. 2011-09-21 13:47:06 +01:00
akwizgran
3e60233ae0 Expose serialisation overhead without breaking encapsulation. 2011-09-21 13:16:58 +01:00
akwizgran
95c3fb4fed Removed getCapacity() from BatchWriter interface. 2011-09-21 12:37:19 +01:00
akwizgran
7ac615520b Moved tag definitions inside serial component. 2011-09-21 12:08:27 +01:00
akwizgran
5548eb32cd DatabaseComponent.generateBatch() now returns a boolean.
This allows a connection to know whether to try writing another batch
immediately, or to wait for an event from the DB.
2011-09-20 14:45:07 +01:00