* progress in moving all the fileaccess over to a wrapper system that can do fd based...
[rrdtool.git] / src / rrd.h
index c06a265..ce712d5 100644 (file)
--- a/src/rrd.h
+++ b/src/rrd.h
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.2.8  Copyright by Tobi Oetiker, 1997-2005
+ * RRDtool 1.2.23  Copyright by Tobi Oetiker, 1997-2007
  *****************************************************************************
  * rrdlib.h   Public header file for librrd
  *****************************************************************************
@@ -52,6 +52,8 @@ extern "C" {
 #ifndef _RRDLIB_H
 #define _RRDLIB_H
 
+#include <sys/types.h> /* for off_t */
+#include <unistd.h> /* for off_t */
 #include <time.h>
 #include <stdio.h> /* for FILE */
 
@@ -60,6 +62,15 @@ typedef double       rrd_value_t;         /* the data storage type is
                                            * double */
 /* END rrd_format.h */
 
+/* information about an rrd file */
+typedef struct rrd_file_t {
+       int   fd;         /* file descriptor if this rrd file */
+       char* file_start; /* start address of an open rrd file */
+       off_t header_len; /* length of the header of this rrd file */
+       off_t file_len;   /* total size of the rrd file */
+       off_t pos;        /* current pos in file */
+} rrd_file_t;
+
 /* main function blocks */
 int    rrd_create(int, char **);
 int    rrd_update(int, char **);
@@ -72,20 +83,28 @@ int    rrd_tune(int, char **);
 time_t rrd_last(int, char **);
 time_t rrd_first(int, char **);
 int    rrd_resize(int, char **);
+char * rrd_strversion(void);
 double rrd_version(void);
 int    rrd_xport(int, char **, int *, time_t *, time_t *,
                 unsigned long *, unsigned long *,
                 char ***, rrd_value_t **);
 
 /* thread-safe (hopefully) */
-int    rrd_create_r(char *filename,
+int    rrd_create_r(const char *filename,
                    unsigned long pdp_step, time_t last_up,
-                   int argc, char **argv);
+                   int argc, const char **argv);
 /* NOTE: rrd_update_r are only thread-safe if no at-style time
    specifications get used!!! */
-int    rrd_update_r(char *filename, char *_template,
-                   int argc, char **argv);
-int    rrd_dump_r(char *filename);
+
+int    rrd_update_r(const char *filename, const char *_template,
+                   int argc, const char **argv);
+int    rrd_fetch_r(const char *filename, const char* cf,
+                   time_t *start, time_t *end,
+                   unsigned long *step,
+                   unsigned long *ds_cnt,
+                   char        ***ds_namv,
+                   rrd_value_t **data);
+int    rrd_dump_r(const char *filename, char *outname);
 time_t rrd_last_r(const char *filename);
 time_t rrd_first_r(const char *filename, int rraindex);
 
@@ -104,6 +123,9 @@ struct rrd_time_value {
   struct tm tm;
 };
 
+char *parsetime(const char *spec, struct rrd_time_value *ptv);
+/* END parsetime.h */
+
 struct rrd_context {
     int len;
     int errlen;
@@ -114,8 +136,6 @@ struct rrd_context {
 /* returns the current per-thread rrd_context */
 struct rrd_context *rrd_get_context(void);
 
-char *parsetime(const char *spec, struct rrd_time_value *ptv);
-/* END parsetime.h */
 
 int proc_start_end (struct rrd_time_value *,  struct rrd_time_value *, time_t *, time_t *);
 
@@ -134,7 +154,7 @@ void   rrd_free_context (struct rrd_context *buf);
 /* int    rrd_test_error_r (struct rrd_context *); */
 /* char  *rrd_get_error_r  (struct rrd_context *); */
 
-int  LockRRD(FILE *);
+int  LockRRD(int in_file);
 
 #endif /* _RRDLIB_H */