4 years agostrings utilities: Add helper functions for common string operations.
Sebastian Harl [Fri, 9 Sep 2016 02:29:27 +0000 (22:29 -0400)]
strings utilities: Add helper functions for common string operations.

4 years agoplugin: Drop support for the old timeseries fetcher.
Sebastian Harl [Thu, 8 Sep 2016 04:11:12 +0000 (00:11 -0400)]
plugin: Drop support for the old timeseries fetcher.

4 years agotimeseries::rrdtool plugin: Switch to the new timeseries-fetcher.
Sebastian Harl [Thu, 8 Sep 2016 04:10:06 +0000 (00:10 -0400)]
timeseries::rrdtool plugin: Switch to the new timeseries-fetcher.

4 years agot/integration/mock_timeseries: Switch to the new timeseries-fetcher.
Sebastian Harl [Wed, 7 Sep 2016 04:00:08 +0000 (00:00 -0400)]
t/integration/mock_timeseries: Switch to the new timeseries-fetcher.

4 years agoplugin: Add a new type of timeseries-fetcher plugins.
Sebastian Harl [Wed, 7 Sep 2016 03:45:17 +0000 (23:45 -0400)]
plugin: Add a new type of timeseries-fetcher plugins.

The new type (soon to replace the old) bundles a DESCRIBE callback along with
the actual fetch callback. DESCRIBE can be used to retrieve information about
a timeseries.

4 years agotimeseries: Add data-structures and helpers to manage timeseries information.
Sebastian Harl [Wed, 7 Sep 2016 03:32:08 +0000 (23:32 -0400)]
timeseries: Add data-structures and helpers to manage timeseries information.

Currently, timeseries information objects provide the names of data sources.

4 years agot/unit/core/timeseries_test: Add minimalistic test for timeseries.
Sebastian Harl [Wed, 7 Sep 2016 03:27:48 +0000 (23:27 -0400)]
t/unit/core/timeseries_test: Add minimalistic test for timeseries.

4 years agoplugin: Refactor callback registration to avoid code duplication.
Sebastian Harl [Tue, 6 Sep 2016 02:54:58 +0000 (22:54 -0400)]
plugin: Refactor callback registration to avoid code duplication.

4 years agoAdd support for multiple metric data-stores.
Sebastian Harl [Mon, 5 Sep 2016 02:36:56 +0000 (22:36 -0400)]
Add support for multiple metric data-stores.

It did not make sense to only store one and let conflicting values override
each other on each iteration. Instead, track each separately, along with the
respective last_update timestamp. This will allow to read the right data on

At the moment, when requesting a timeseries, the most up to date data store
will be used.

The network plugin does not support sending multiple data stores at the
moment. It will only send the first.

4 years agoLet the network protocol and SysQL support last_update for metric stores.
Sebastian Harl [Mon, 5 Sep 2016 01:18:00 +0000 (21:18 -0400)]
Let the network protocol and SysQL support last_update for metric stores.

4 years agoStore a separate last_update timestamp for metric stores.
Sebastian Harl [Sun, 4 Sep 2016 16:53:29 +0000 (12:53 -0400)]
Store a separate last_update timestamp for metric stores.

Currently, it is (at least) the same as the metric's last_update timestamp.
We'll need this later when supporting multiple metric stores.

4 years agostore.h: Reuse the sdb_metric_store_t type for a metric's store field.
Sebastian Harl [Sun, 4 Sep 2016 13:22:35 +0000 (09:22 -0400)]
store.h: Reuse the sdb_metric_store_t type for a metric's store field.

4 years agounixsock_test: Fix a potential uninitialized memory access in mock_write.
Sebastian Harl [Wed, 17 Aug 2016 21:16:47 +0000 (23:16 +0200)]
unixsock_test: Fix a potential uninitialized memory access in mock_write.

4 years agoSSL utils: Fixed a memory leak in a couple of error conditions.
Sebastian Harl [Wed, 17 Aug 2016 21:01:34 +0000 (23:01 +0200)]
SSL utils: Fixed a memory leak in a couple of error conditions.

4 years agot/valgrind.suppress: Fix deduplication of cond jump.
Sebastian Harl [Wed, 17 Aug 2016 20:54:44 +0000 (22:54 +0200)]
t/valgrind.suppress: Fix deduplication of cond jump.

This was introduced in 7645df5e8ef. The actual call traces differed a bit.

4 years agot/valgrind.suppress: Remove duplicate.
Sebastian Harl [Wed, 10 Aug 2016 07:56:02 +0000 (09:56 +0200)]
t/valgrind.suppress: Remove duplicate.

Also, catch further errors in gcov_exit. Depending on the version, the call
traces are different.

5 years Added .git suffix to default version again.
Sebastian Harl [Thu, 25 Feb 2016 21:50:28 +0000 (22:50 +0100)] Added .git suffix to default version again.

5 years agoRelease SysDB 0.8.0. sysdb-0.8.0
Sebastian Harl [Thu, 25 Feb 2016 20:52:00 +0000 (21:52 +0100)]
Release SysDB 0.8.0.

5 years agoReleaseNotes: Added 0.8.0 release.
Sebastian Harl [Thu, 25 Feb 2016 20:51:24 +0000 (21:51 +0100)]
ReleaseNotes: Added 0.8.0 release.

5 years agoFix compilation with GCC when _GNU_SOURCE isn't defined.
Sebastian Harl [Thu, 25 Feb 2016 20:37:55 +0000 (21:37 +0100)]
Fix compilation with GCC when _GNU_SOURCE isn't defined.

That is, add some missing headers and bump POSIX compliance to POSIX:2008
which will ensure that 'struct timespec' is defined without funny tricks.

5 years agoInclude strings.h instead of defining _BSD_SOURCE to get strcasecmp.
Sebastian Harl [Thu, 25 Feb 2016 20:35:53 +0000 (21:35 +0100)]
Include strings.h instead of defining _BSD_SOURCE to get strcasecmp.

_BSD_SOURCE is deprecated in favor of _DEFAULT_SOURCE but also it's not
needed for strcasecmp() when including strings.h in addition to string.h.

5 years agofrontend/query: Add the DATA type to TIMESERIES replies.
Sebastian Harl [Tue, 26 Jan 2016 23:16:41 +0000 (00:16 +0100)]
frontend/query: Add the DATA type to TIMESERIES replies.

This was lost in 9a96acd759c31211aa512e174339a9c178c4eb83.

5 years agofrontend/query: Simplified code a little.
Sebastian Harl [Tue, 26 Jan 2016 22:32:33 +0000 (23:32 +0100)]
frontend/query: Simplified code a little.

5 years agoEnable flex verbose output only in verbose build mode.
Sebastian Harl [Mon, 30 Nov 2015 11:10:11 +0000 (12:10 +0100)]
Enable flex verbose output only in verbose build mode.

5 years agofrontend/query: Fixed an uninitialized value.
Sebastian Harl [Mon, 30 Nov 2015 10:53:25 +0000 (11:53 +0100)]
frontend/query: Fixed an uninitialized value.

5 years agoClean up after checking compiler flags and fix C++ tests.
Sebastian Harl [Wed, 28 Oct 2015 22:19:52 +0000 (23:19 +0100)]
Clean up after checking compiler flags and fix C++ tests.

They just happened to work fine when done right after C tests.

5 years agoEnable silent automake rules by default (if available).
Sebastian Harl [Tue, 13 Oct 2015 21:44:15 +0000 (23:44 +0200)]
Enable silent automake rules by default (if available).

5 years agoMerged branch 'master' of git://
Sebastian Harl [Tue, 13 Oct 2015 19:30:13 +0000 (21:30 +0200)]
Merged branch 'master' of git://

5 years agoHandle last_update/interval in the core rather than in memstore.
Sebastian Harl [Tue, 13 Oct 2015 19:24:17 +0000 (21:24 +0200)]
Handle last_update/interval in the core rather than in memstore.

For this purpose, let the sdb_plugin_store_* functions fetch the latest
revision of the object to determine the last update interval and last
recorded interval. The memstore now expects both values to be passed in
whenever storing/updating an object.

5 years agomemstore: Let get_child() support arbitrary parent and child elements.
Sebastian Harl [Tue, 13 Oct 2015 19:13:05 +0000 (21:13 +0200)]
memstore: Let get_child() support arbitrary parent and child elements.

5 years agoAdd support for fetching arbitrary objects, including attributes.
Sebastian Harl [Tue, 13 Oct 2015 18:27:24 +0000 (20:27 +0200)]
Add support for fetching arbitrary objects, including attributes.

That is, the backend now supports this. The functionality is not yet exposed
via SysQL.

5 years agofrontend/query_test: Simplified result checks.
Sebastian Harl [Tue, 13 Oct 2015 17:09:41 +0000 (19:09 +0200)]
frontend/query_test: Simplified result checks.

Don't track the expected length since it always matches strlen() anyway. The
additional check would hide the diff if it failed, adding an unnecessary step
for debugging failures.

5 years agoInclude strings.h which is required for strcasecmp().
Sebastian Harl [Fri, 9 Oct 2015 21:37:21 +0000 (23:37 +0200)]
Include strings.h which is required for strcasecmp().

5 years agoFETCH: Add parameter for fetching the main object without children.
Sebastian Harl [Fri, 9 Oct 2015 16:56:12 +0000 (18:56 +0200)]
FETCH: Add parameter for fetching the main object without children.

That is, exclude any attributes or child objects.

Use this to simplify the TIMESERIES fetcher which no longer requires an
attribute callback.

5 years agoSplit the memstore module from the store module.
Sebastian Harl [Wed, 7 Oct 2015 21:45:51 +0000 (23:45 +0200)]
Split the memstore module from the store module.

5 years agoRenamed in-memory store types and functions to sdb_memstore*.
Sebastian Harl [Wed, 7 Oct 2015 20:25:29 +0000 (22:25 +0200)]
Renamed in-memory store types and functions to sdb_memstore*.

5 years agoconnection: Drop old and unused conn_node* types.
Sebastian Harl [Wed, 7 Oct 2015 20:23:18 +0000 (22:23 +0200)]
connection: Drop old and unused conn_node* types.

This was part of the old parser implementation.

5 years agoRemoved sdb_store_fetch_timeseries from headers; it's gone.
Sebastian Harl [Wed, 7 Oct 2015 07:31:14 +0000 (09:31 +0200)]
Removed sdb_store_fetch_timeseries from headers; it's gone.

5 years agostore: Use full initializers for store objects.
Sebastian Harl [Tue, 6 Oct 2015 20:17:29 +0000 (22:17 +0200)]
store: Use full initializers for store objects.

Older versions of GCC/CLANG don't handle "missing" field initializers well.

5 years agoconfigure: Include rrd.h when checking for rrd_client.h.
Sebastian Harl [Tue, 6 Oct 2015 20:06:39 +0000 (22:06 +0200)]
configure: Include rrd.h when checking for rrd_client.h.

Apparently, this is needed for RRDtool 1.5.

5 years agoBuild a more generic/powerful query API which writes to a store-writer.
Sebastian Harl [Tue, 6 Oct 2015 19:47:34 +0000 (21:47 +0200)]
Build a more generic/powerful query API which writes to a store-writer.

Instead of letting the query implementation write JSON directly, let them emit
objects to a store-writer. This allows for more powerful and centralized
post-processing of the data and avoids code-duplication by moving all logic of
how to write out the data to the core. Also, this had a couple of nice side
effects and allowed for further simplication:

 - The TIMESERIES command is now handled by the front-end (based on a FETCH of
   the respective metric data); query plugin no longer have to implement this.

 - All protocol specific information is now handled by the frontend; query
   plugins no longer have to handle this (response-type).

 - Further separation of the memory-store and generic store code.

5 years agoMove the timeseries serialize to the timeseries module.
Sebastian Harl [Tue, 6 Oct 2015 19:34:25 +0000 (21:34 +0200)]
Move the timeseries serialize to the timeseries module.

5 years agostore: Don't report an error if a missing writer callback isn't used.
Sebastian Harl [Tue, 6 Oct 2015 18:01:27 +0000 (20:01 +0200)]
store: Don't report an error if a missing writer callback isn't used.

That is, allow to emit store objects to an incomplete writer as long as all
required callbacks are present.

5 years agostore: Use the JSON writer when querying the in-memory store.
Sebastian Harl [Wed, 30 Sep 2015 20:10:25 +0000 (22:10 +0200)]
store: Use the JSON writer when querying the in-memory store.

That is, instead of writing to a JSON formatter directly, access it through
it's writer API. This will allow for more flexible store access.

5 years agostore_json: Base the memstore emitter on the store-writer API.
Sebastian Harl [Wed, 30 Sep 2015 09:18:22 +0000 (11:18 +0200)]
store_json: Base the memstore emitter on the store-writer API.

5 years agostore_json: Let the formatter implement the store-writer interface.
Sebastian Harl [Wed, 30 Sep 2015 09:17:07 +0000 (11:17 +0200)]
store_json: Let the formatter implement the store-writer interface.

5 years agoRead-only store types: const char ** → const char * const *.
Sebastian Harl [Wed, 30 Sep 2015 09:14:46 +0000 (11:14 +0200)]
Read-only store types: const char ** → const char * const *.

This makes it truely read-only.

5 years agostore_json: Remove any memstore-specific code.
Sebastian Harl [Mon, 28 Sep 2015 20:15:41 +0000 (22:15 +0200)]
store_json: Remove any memstore-specific code.

This will allow to further separate the JSON code from the memstore

5 years agostore_json: Fix parent/child detection.
Sebastian Harl [Mon, 28 Sep 2015 20:07:08 +0000 (22:07 +0200)]
store_json: Fix parent/child detection.

Rewinding the formatter state has to happen any time we see a parent object of
the current object. This happens every time the current context isn't HOST
(hosts don't have any parents) or the new object is an ATTRIBUTE (which are
always children of whatever other object type).

This broke in 3603db13105aefac4d6ceb356bcfd118a92fa654.

5 years agostore_json: Split sdb_store_json_emit into private functions.
Sebastian Harl [Mon, 28 Sep 2015 08:06:33 +0000 (10:06 +0200)]
store_json: Split sdb_store_json_emit into private functions.

The public function will only handle memstore specific logic.

5 years agostore_json: Moved special casing of parent objects into the caller.
Sebastian Harl [Mon, 28 Sep 2015 07:54:15 +0000 (09:54 +0200)]
store_json: Moved special casing of parent objects into the caller.

This makes the JSON module more generic by removing a special case of the
memory store. The caller may now emit arbitrary objects and the formatter will
do the right thing as long as parent-child relationships are right.

5 years agostore, plugin: Let the plugin module determine an objects backends.
Sebastian Harl [Thu, 24 Sep 2015 18:49:55 +0000 (20:49 +0200)]
store, plugin: Let the plugin module determine an objects backends.

The store writer plugins are only expected to record the provided backend
(after merging it with existing entries).

5 years agostore: Further abstract internal handling of new objects.
Sebastian Harl [Thu, 24 Sep 2015 07:38:26 +0000 (09:38 +0200)]
store: Further abstract internal handling of new objects.

Add a new type representing a to-be-stored object to simplify storing new

5 years agostore: Simplified store-attribute callback.
Sebastian Harl [Wed, 23 Sep 2015 19:49:38 +0000 (21:49 +0200)]
store: Simplified store-attribute callback.

There's no need anymore to split this across multiple functions. It's easier
to follow if the code is in one place.

5 years agostore: Add separate store-object types for the store writer API.
Sebastian Harl [Tue, 22 Sep 2015 08:09:24 +0000 (10:09 +0200)]
store: Add separate store-object types for the store writer API.

The argument list of some of the callbacks has already gotten kinda long and
we'll want to add more (backends, etc.). Introduce new types which provide all
meta-data of the respective store types.

Also, only use a single callback to store all kinds of attributes, similar to
how it was already done in the "proto" module.

5 years agostore: Dropped sdb_ prefix from private store types.
Sebastian Harl [Thu, 17 Sep 2015 07:20:15 +0000 (09:20 +0200)]
store: Dropped sdb_ prefix from private store types.

5 years agostore.h: Updated some documentation comments.
Sebastian Harl [Wed, 16 Sep 2015 19:46:18 +0000 (21:46 +0200)]
store.h: Updated some documentation comments.

A store instance isn't synonym to "the database" anymore.

5 years agoplugin, store: Add service/metric "hostname" attributes centrally.
Sebastian Harl [Wed, 16 Sep 2015 19:33:05 +0000 (21:33 +0200)]
plugin, store: Add service/metric "hostname" attributes centrally.

That is, let the respective sdb_plugin_store* functions do that instead of
requiring each store implementation to do so.

5 years agofrontend/query_test: Test some weird, special cases.
Sebastian Harl [Thu, 3 Sep 2015 08:05:38 +0000 (10:05 +0200)]
frontend/query_test: Test some weird, special cases.

5 years agostore: Fix execution of more complex iterators.
Sebastian Harl [Wed, 2 Sep 2015 22:40:39 +0000 (00:40 +0200)]
store: Fix execution of more complex iterators.

That is, follow "indirections" of typed expressions if the iterator is not on
the top-most level.

5 years agoRemove unused sdb_store_expr_iterable().
Sebastian Harl [Wed, 2 Sep 2015 22:13:25 +0000 (00:13 +0200)]
Remove unused sdb_store_expr_iterable().

5 years agoAllow and implement iterating arbitrary (non-constant) array values.
Sebastian Harl [Wed, 2 Sep 2015 21:49:20 +0000 (23:49 +0200)]
Allow and implement iterating arbitrary (non-constant) array values.

That is, iterators may now work with arithmetic expressions that evaluate to
an array.

5 years agoanalyzer: Support more flexible iterator expressions.
Sebastian Harl [Mon, 31 Aug 2015 20:50:20 +0000 (22:50 +0200)]
analyzer: Support more flexible iterator expressions.

In particular, more complex typed expressions may now include an iterator on a
lower level, like `LOOKUP services MATCHING ANY host.backend =~ 'foo'`. This
is done by adding more information to the analyzer context and pushing it down
to child nodes in the AST if necessary.

As a nice side-effect, the iterator analyzer does not longer have to know
about the specific type of its child node.

5 years agoanalyzer: Fixed some error messages.
Sebastian Harl [Mon, 31 Aug 2015 20:28:28 +0000 (22:28 +0200)]
analyzer: Fixed some error messages.

5 years agoparser: Require a context for each parser operation.
Sebastian Harl [Mon, 31 Aug 2015 20:08:45 +0000 (22:08 +0200)]
parser: Require a context for each parser operation.

That is, let the caller provide the execution context (object type) when
parsing incomplete commands (conditionals / arithmetic expressions). This
removes the need to call the analyzer again and avoids some special code in
the analyzer.

5 years agoLet the front-end handle STORE commands.
Sebastian Harl [Mon, 24 Aug 2015 19:16:06 +0000 (21:16 +0200)]
Let the front-end handle STORE commands.

… rather than requiring each reader plugin to do so which doesn't make any
sense at all.

5 years agot/integration/ Add integration tests for the STORE command.
Sebastian Harl [Mon, 24 Aug 2015 19:15:28 +0000 (21:15 +0200)]
t/integration/ Add integration tests for the STORE command.

5 years agostore: Do not canonicalize the hostname when fetching a timeseries.
Sebastian Harl [Thu, 13 Aug 2015 17:02:14 +0000 (19:02 +0200)]
store: Do not canonicalize the hostname when fetching a timeseries.

This decision should be made on a higher level.

5 years agofrontend: Connection-specific functions now use the sdb_conn_ prefix.
Sebastian Harl [Thu, 13 Aug 2015 16:55:34 +0000 (18:55 +0200)]
frontend: Connection-specific functions now use the sdb_conn_ prefix.

… instead of sdb_fe_.

5 years agofrontend/connection.h: Removed sdb_fe_parse, it has been dropped.
Sebastian Harl [Thu, 13 Aug 2015 07:04:51 +0000 (09:04 +0200)]
frontend/connection.h: Removed sdb_fe_parse, it has been dropped.

5 years agostore: Removed obsolete TODO note.
Sebastian Harl [Thu, 13 Aug 2015 06:52:34 +0000 (08:52 +0200)]
store: Removed obsolete TODO note.

5 years agoplugin, store: Handle hostname canonicalization in the plugin module.
Sebastian Harl [Wed, 12 Aug 2015 19:55:41 +0000 (21:55 +0200)]
plugin, store: Handle hostname canonicalization in the plugin module.

This is a high-level functionality. Each store implementation should not have
to worry about it.

5 years agosysdb(7): Briefly mention the object store.
Sebastian Harl [Mon, 10 Aug 2015 07:44:23 +0000 (09:44 +0200)]
sysdb(7): Briefly mention the object store.

5 years agosysdbd-store-memory(5): Added a manpage for store::memory.
Sebastian Harl [Mon, 10 Aug 2015 07:36:50 +0000 (09:36 +0200)]
sysdbd-store-memory(5): Added a manpage for store::memory.

5 years agostore::memory: Add a plugin providing an in-memory store.
Sebastian Harl [Sun, 9 Aug 2015 22:19:28 +0000 (00:19 +0200)]
store::memory: Add a plugin providing an in-memory store.

This plugin replaces the default, built-in store. It is a simple wrapper
around the built-in store implementation and, thus, provides exactly the same
functionality but wrapped into a plugin.

5 years agot/Makefile: Drop unused, old frontend/parser_test.
Sebastian Harl [Sun, 9 Aug 2015 21:55:23 +0000 (23:55 +0200)]
t/Makefile: Drop unused, old frontend/parser_test.

5 years agoplugin: Report an error when writing to the store with no writers.
Sebastian Harl [Sat, 8 Aug 2015 07:57:48 +0000 (09:57 +0200)]
plugin: Report an error when writing to the store with no writers.

5 years agostore: Drop the global (default) store.
Sebastian Harl [Sat, 8 Aug 2015 07:34:56 +0000 (09:34 +0200)]
store: Drop the global (default) store.

Instead, register a store from sysdbd and make sure to re-register it on
reconfigure. Previously, the store plugin would have been dropped in that

5 years agostore: All store functions now accept a store object.
Sebastian Harl [Fri, 7 Aug 2015 16:26:51 +0000 (18:26 +0200)]
store: All store functions now accept a store object.

That is, instead of operating on a global, shared instance.

5 years agostore: Add wrapper functions to store an object in an arbitrary store.
Sebastian Harl [Thu, 6 Aug 2015 15:39:45 +0000 (17:39 +0200)]
store: Add wrapper functions to store an object in an arbitrary store.

5 years agocore: Export the sdb_store, sdb_store_reader, sdb_store_writer types.
Sebastian Harl [Thu, 6 Aug 2015 15:22:31 +0000 (17:22 +0200)]
core: Export the sdb_store, sdb_store_reader, sdb_store_writer types.

This is in preparation to more flexible store handling.

5 years agot/valgrind.suppress: Refine the suppression in the libc exit handler.
Sebastian Harl [Thu, 6 Aug 2015 06:56:24 +0000 (08:56 +0200)]
t/valgrind.suppress: Refine the suppression in the libc exit handler.

5 years agofrontend: Use the plugin query interface instead of direct store access.
Sebastian Harl [Wed, 5 Aug 2015 08:45:11 +0000 (10:45 +0200)]
frontend: Use the plugin query interface instead of direct store access.

The built-in store is registered as a reader automatically at the moment.

5 years agocore: Add support for reader/query plugins.
Sebastian Harl [Wed, 5 Aug 2015 08:38:48 +0000 (10:38 +0200)]
core: Add support for reader/query plugins.

A reader plugin can be used to query a data-store based on a query described
by an AST. The plugin module provides a generic function for this purpose.

At the moment, only a single reader plugin can be used at a time. Supporting
multiple readers requires a good merge strategy. The challenge is to handle
filters and query conditions correctly which may evaluate differently after
two stores have been merged.

5 years agot/valgrind.suppress: Add an invalid free in a libc exit handler.
Sebastian Harl [Tue, 4 Aug 2015 07:13:47 +0000 (09:13 +0200)]
t/valgrind.suppress: Add an invalid free in a libc exit handler.

6 years agoplugin: Drop sdb_plugin prefix from private names.
Sebastian Harl [Thu, 28 May 2015 08:29:21 +0000 (10:29 +0200)]
plugin: Drop sdb_plugin prefix from private names.

6 years agostore_exec: Remove unnecessary casts.
Sebastian Harl [Thu, 28 May 2015 08:08:45 +0000 (10:08 +0200)]
store_exec: Remove unnecessary casts.

6 years agostore: Let sdb_store_json_formatter_t inherit from sdb_object_t.
Sebastian Harl [Wed, 27 May 2015 20:49:20 +0000 (22:49 +0200)]
store: Let sdb_store_json_formatter_t inherit from sdb_object_t.

6 years agoDrop sdb_store_get_host() from tests.
Sebastian Harl [Wed, 27 May 2015 20:48:21 +0000 (22:48 +0200)]
Drop sdb_store_get_host() from tests.

6 years agostore: Drop unused sdb_store_has_host.
Sebastian Harl [Fri, 22 May 2015 07:21:26 +0000 (09:21 +0200)]
store: Drop unused sdb_store_has_host.

6 years agoReplaced sdb_store_<type> with sdb_plugin_store_<type>.
Sebastian Harl [Thu, 21 May 2015 22:47:24 +0000 (00:47 +0200)]
Replaced sdb_store_<type> with sdb_plugin_store_<type>.

That is, all store updates will now directly go through the plugin API and be
distributed to all store-writer plugins from there.

6 years agoMerged branch 'master' of git://
Sebastian Harl [Thu, 21 May 2015 22:46:58 +0000 (00:46 +0200)]
Merged branch 'master' of git://

6 years agostore: Register a store writer and handle all updates through the plugin API.
Sebastian Harl [Thu, 21 May 2015 22:18:25 +0000 (00:18 +0200)]
store: Register a store writer and handle all updates through the plugin API.

We still reference a global store object. This change further encapsulates the

6 years agoplugin: sdb_plugin_store_* now return >0 if the new value was too old.
Sebastian Harl [Thu, 21 May 2015 22:16:04 +0000 (00:16 +0200)]
plugin: sdb_plugin_store_* now return >0 if the new value was too old.

That is, the return values now mean the same as for the sdb_store_* functions.

6 years agostore: Reordered some functions to group by general purpose.
Sebastian Harl [Thu, 21 May 2015 21:42:11 +0000 (23:42 +0200)]
store: Reordered some functions to group by general purpose.

6 years agoFix an uninitialized value warnings caused by clang not knowing about fail().
Sebastian Harl [Thu, 21 May 2015 21:39:22 +0000 (23:39 +0200)]
Fix an uninitialized value warnings caused by clang not knowing about fail().

6 years agostore: Make the actual store a separate object.
Sebastian Harl [Thu, 21 May 2015 21:36:57 +0000 (23:36 +0200)]
store: Make the actual store a separate object.

That'll allow us to use different store objects in multiple places in the

6 years agostore: Drop sdb_ prefix from private symbols.
Sebastian Harl [Thu, 21 May 2015 18:17:42 +0000 (20:17 +0200)]
store: Drop sdb_ prefix from private symbols.

6 years agodata: Use a predefined format for sdb_strftime().
Sebastian Harl [Wed, 20 May 2015 21:53:48 +0000 (23:53 +0200)]
data: Use a predefined format for sdb_strftime().

Also, print the nanosecond fraction of a second.

6 years agot/: Use ck_assert() instead of assert() in all tests.
Sebastian Harl [Wed, 20 May 2015 20:04:54 +0000 (22:04 +0200)]
t/: Use ck_assert() instead of assert() in all tests.