Update license date on all files. No functional changes.
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.
Additional debugging for events and PDU processing for debugging out of
order PDU problems.
Make event queue a TAILQ instead of an STAILQ to avoid n2 algorithm
when results arrive in order.
First cut at fixing bug that sometimes caused an "End of Results" PDU to
be delivered before some of the results themselves. This involves
passing a "number of results sent" field in the "End of Results" PDU and
saving that PDU until the indicated number of results are processed....
Improvements to event and metadata printing.
Changes for signed/unsigned conflicts and other type nits. C++ is much
more picky about these than C, but this is probably justified. Sadly,
some of the changes are pretty ugly.
First cut at separating GCL instances (GINs) from GDP Objects (GOBs).
This is intended to fix some semantic problems with subscriptions. End
users always use GINs (aliased to gdp_gcl_t for now for compatibility),
and there is one GIN for each call to gdp_gcl_open (i.e., no returning...
Update licenses to 2017.
Fix problem that might occur if an initial response PDU to a command
such as MULTIREAD is delayed; follow-on data was treated as a response to
the initial command rather than as asynchronous events.
Code cleanup and comments.
First cut on implementing FWD_APPEND command. Still not working for all
Update license. No code changes.
Include copyright in all files. There are scripts to do bulk
replacement of the copyright if desired.
Implement asynchronous writes. Adds new interfaces:
* gdp_gcl_append_async -- initiate an asynchronous write.
* gdp_event_getstat -- get the status code from an event.
Asynchronous reads can be done using multiread.
Note that asynchronous writes do not attempt retransmissions, unlike...
Back out changes carrying over req to event --- it's important that they
Keep old PDU around after delivering data from subscription; this let's
us renew the subscription periodically so that records will not be lost.
Run subscription callbacks in dedicated thread. Untested.
Implement subscription callbacks. Note that these almost never do what
you actually want, so the event interface is preferred.
Simplify event queue implementation (TAILQ => STAILQ)
First cut at returning multiple results. This extends "subscribe" to
have a starting record number and a record count.
Hide data structure internals by wrapping them in functions. This also
updates the documentation, but it hasn't been significantly reviewed
Another snapshot. Much closer to having subscriptions working.