Create a base class for listening commands

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
Start defining database layer

Create a DB class for managing database connections
and data.

Provide a schema file for creating a new database.

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
Add timestamp to start and end events

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
start the 'record' command

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
handle errors on app exit as end_run

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
Move json encoding functions

Move the functions out of the publisher class to make
them easier to invoke from tests.

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
unpack wrapped exception before sending data

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
record the end of run

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
add -e option to exit with an error

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
Add testing for exceptions

Have the test program throw and catch an exception
so the tracer code can be exercised in that case.

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
Move json code to its own module

Move the json wrapper function to its own module.

Have the db layer deal with JSON encoding values
as it writes them, since the publisher will have
encoded the entire message, so parts will be
complex objects by the time they reach the db layer.

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
Record intermediate trace events

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
Expand db tests for trace

Verify that the locals and arg values being stored
are correct.

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>