Update license date on all files. No functional changes.
Second cut at sorting asynchronous data records. Currently all done with
simulation (-Dtest.gdp.chan.seqno=102 randomizes the incoming sequence
numbers), and so missing or duplicated incoming records have not been
First pass at ordering results of asynchronous reads. Works if the
reads come in pre-sorted, but so far untested for out-of-order delivery.
Pass Layer 4 network sequence number to higher layers.
Remove vestiges of old signature implementation.
Snapshot: change physical interface to make more efficient use of SQLite
when retrieving sets. Use this for asynchronous reads.
First cut at flattening out protobuf definition. Some changes to data
structure printing (e.g., _gdp_pdu_dump) to get indenting more rational
so as to make reading the output easier.
First cut at running Layer 5 network protocol version 4 over old
(version 3) Layer 4 stack. Substantial parts are unimplemented,
including signature generation and checking, read or subscribe by
timestamp or hash, and others. No asynchronous operations including...
Tentatively working on v3 network protocol.
First cut at new net protocol. Compiles, but not yet tested (not even
once --- do not try to run this!).
First cut at "delete log" command (lightly tested).
Generalize ack/nak to EP_STAT mapping to be more flexible and better
allow for improved error messages. Still more to be done, but the
basics are in.
Initial implementation of unsubscribe.
Implement a way to deliver "record missing" back to client.
Update licenses to 2017.
Make many parameters "const" where possible.
Add new NAK code for failure to replicate on an append
Reserve command 3 for router-to-router messages (already in use by
Next take on read-by-timestamp. This version works for read, multiread,
and subscribe. There are still some glitches (e.g., you can't have a
starting timestamp in the future) but fixing these would require major
code restructuring, and besides, you can't specify a starting record...
First cut at read-by-timestamp. Adds Berkeley DB as a dependency (two
versions supported). The interface still isn't quite right; in
particular, subscribe and multiread don't take timestamps. This should
be remedied before this code is released.
Rename "extents" to be "segments" because of different potential
semantics and enable them by default.
Be more tolerant of missing records and duplicated records (preparation
First cut on implementing FWD_APPEND command. Still not working for all
Clean up GDP ack/nak status codes.
Add status code/NAK command corresponding to 410 Gone (for expired
Implement ability to create new extents. Currently there is no attempt
made to include authorization.
Update license. No code changes.
Include copyright in all files. There are scripts to do bulk
replacement of the copyright if desired.
Better commenting on PDU layout
Work-in-Progress: automatic subscription renewals. Incomplete.
Change on-disk log to store signature.
Return that signature on READ commands.
Update reader-test to add a -v flag to print signature info.
Document new interfaces.
Sample fix for Nitesh (Readable and Appendable logs)
Change PDU version number to 3.
Another signing snapshot: signatures are created and sent but not
checked. Metadata is returned when a GCL is opened. Still have a
problem with reference counting of GCL handles.
Snapshot adding signing. Signatures are computed but not sent or
Cleanup prior to code review: chiefly comments, a bit of code reordering
for better flow.
Significant changes to locking and subscriptions:
* Locks on gdp_req_t are now more extensive to avoid data races.
* Care is given to prevent subscription data being processed before
the subscription itself is in place.
* Move channel pointer into gdp_pdu_t purely as a convenience when...
Finish conversion of "packet" to "PDU". Mostly comments.
Snapshot: working on timing out subscriptions.
Extend PING so it can check an individual subscription. Note: doesn't
work properly if one client has multiple subscriptions on the same GCL,
since it actually checks to see if there exists /any/ subscription from
Other random cleanups (naming and formatting).
Rename PUBLISH => APPEND (API change).
Eliminate gdp_datum_setrecno and gdp_datum_setts (didn't make sense).
Fix example code in protocol documentation.
Implement gdplogd shutdown actions: withdraw advertisements, explicitly
terminate all subscriptions.
Make request-id field required in PDU to make the router code easier.
Unify command and ack/nak processing; unify Associative and LRU GCL
caches; multiple other cleanups.
Add new NAK_R_NOROUTE code for routing layer to inform apps of unknown
Snapshot in getting fallbacks for connections to the routing plane.
Still doesn't work, but at least works for the case where the first
address in the list is available. It's also clear that _gdp_req_new
needs substantial work; as it is, gdplogd can handle commands and...
Adjust fixed PDU size to reflect 4 octet data lengths.
Change data lengths to 4 bytes; if longer PDUs are allowed there are
problems on 32-bit machines.
First cut on the dual-layer model. The old GDP daemon is now the GDP
log daemon; instead of listening to connections it initiates them. This
commit does not include the routing layer.
First cut at new architecture for GDP (separate routing from log layer).
This compiles but does not run.
Adjustments for new PDU format, better error checking, etc.
Change the PDU format again to make a routing module easier. It was
necessary to make the signature size explicit, so you didn't have to
know the details of the signature algorithm to use it.
Begin change to new on-wire protocol. Involves lots of renaming.
Amazingly it still seems to run.