Maybe you should look at rrdcached - it doesn't solve your first problem
(it accepts the numbers as a string), but it does cache the data in
memory and only flushes it, everything at once, every once in a while
(configurable how often).
Hope this helps.
Best regards,
Matija
On 05/29/2014 12:34 PM, Matthias Nagel wrote:
> Hello,
>
> I am writing a C++ application that needs to update a RRD file. A had a look
> into "rrd_tool.c" and I found this tread
> https://www.mail-archive.com/[email protected]/msg10245.html. Well,
> I see how to get working code that does what I want to do, but actually I
> dislike the idea to convert the (numeric) variables of my program into an
> array of strings (aka argv[]) such that the function "rrd_update" can convert
> it back.
>
> Is there any second level of API function that are a little bit more low
> level? I think of a function with the following signature:
>
> int update(
> const char* rrdFile,
> unsigned long timestamp,
> const unsigned int dsIndexes[],
> const double values[]
> );
>
> Moreover, my program runs as a daemon and the pdp step frequency is 1
> second. Hence, I would like to open the rrd file only once in the beginning,
> perform an update every second and close the file only if the daemon
> terminates. (Of course, the updates should be flushed to disk once in I
> while, such that data isn't lost in case of a crash.) Is there anything like
> a concept of file handles? I.e.
>
> struct rrdfile_t { ... };
>
> int open( const char* rrdFile, rrdfile_t* handle )
>
> int update( rrdfile_t* handle, ... /* as above */ )
>
> int close( rrdfile_t* handle )
>
>
> I had a look at "rrd_update.c" in order to find out what "rrd_update( int
> argc, char* argv[] )" does but that seemed a bit too low-level.
>
> Thanks, Matthias
>
_______________________________________________
rrd-users mailing list
[email protected]
https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users