/*
* This file is part of DisOrder
- * Copyright (C) 2005, 2006 Richard Kettlewell
+ * Copyright (C) 2005, 2006, 2007 Richard Kettlewell
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
+/** @file server/trackdb.h
+ * @brief Track database public interface */
#ifndef TRACKDB_H
#define TRACKDB_H
extern unsigned long cache_files_hits, cache_files_misses;
/* Cache entry type and tracking for regexp-based lookups */
-void trackdb_init(int recover);
-#define TRACKDB_NO_RECOVER 0
-#define TRACKDB_NORMAL_RECOVER 1
-#define TRACKDB_FATAL_RECOVER 2
+/** @brief Do not attempt database recovery (trackdb_init()) */
+#define TRACKDB_NO_RECOVER 0x0000
+
+/** @brief Attempt normal recovery (trackdb_init()) */
+#define TRACKDB_NORMAL_RECOVER 0x0001
+
+/** @brief Attempt catastrophic trcovery (trackdb_init()) */
+#define TRACKDB_FATAL_RECOVER 0x0002
+
+/** @brief Mask of recovery bits (trackdb_init()) */
+#define TRACKDB_RECOVER_MASK 0x0003
+
+/** @brief Open for database upgrade (trackdb_open()) */
+#define TRACKDB_OPEN_FOR_UPGRADE 0x0004
+
+/** @brief Permit upgrade (trackdb_open()) */
+#define TRACKDB_CAN_UPGRADE 0x0008
+
+/** @brief Do not permit upgrade (trackdb_open()) */
+#define TRACKDB_NO_UPGRADE 0x0000
+
+/** @brief Mask of upgrade bits (trackdb_open()) */
+#define TRACKDB_UPGRADE_MASK 0x000C
+
+void trackdb_init(int flags);
void trackdb_deinit(void);
/* close/close environment */
void trackdb_master(struct ev_source *ev);
/* start deadlock manager */
-void trackdb_open(void);
+void trackdb_open(int flags);
void trackdb_close(void);
/* open/close track databases */
char **trackdb_stats(int *nstatsp);
/* return a list of database stats */
+void trackdb_stats_subprocess(struct ev_source *ev,
+ void (*done)(char *data, void *u),
+ void *u);
+/* collect stats in background and call done() with results */
+
int trackdb_set(const char *track,
const char *name,
const char *value);
char **trackdb_new(int *ntracksp, int maxtracks);
+void trackdb_expire_noticed(time_t when);
+
#endif /* TRACKDB_H */
/*