Return the status of token removal in auth_logout
[blerg.git] / database / database.h
index 4c5853e..6dfcf9d 100644 (file)
@@ -7,6 +7,9 @@
 #include <stdint.h>
 #include <time.h>
 
+#define VALID_CHAR(c) ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '-' || c == '_')
+#define WHITESPACE(c) (c == ' ' || c == '\t' || c == '\n' || c == '\r')
+
 struct record {
        uint32_t offset;
        uint16_t length;
@@ -16,8 +19,16 @@ struct record {
 
 struct meta {
        uint64_t sequence;
+       uint64_t subscription_mark;
+       uint32_t status;
 };
 
+/* meta.status is a bitfield of these options */
+/* Muted - if set, tags/refs and subscriptions are not calculated */
+#define BLERGSTATUS_MUTED      0x00000001
+/* Mentioned - if set, user has been mentioned. */
+#define BLERGSTATUS_MENTIONED  0x00000002
+
 struct blerg {
        int meta_fd;
        int index_fd;
@@ -31,12 +42,19 @@ struct blerg {
        int data_size;
 };
 
-int blerg_exists(const char *);
-struct blerg *blerg_open(const char *);
-int blerg_close(struct blerg *);
-int blerg_store(struct blerg *, const char *, int);
-int blerg_fetch(struct blerg *, int, char **, int *);
+#define BLERG_INVALID_RECORD 0xFFFFFFFFFFFFFFFF
+
+int      blerg_init();
+int      blerg_exists(const char *name);
+struct   blerg *blerg_open(const char *name);
+int      blerg_close(struct blerg *blerg);
+uint64_t blerg_store(struct blerg *blerg, const char *data, int length);
+int      blerg_fetch(struct blerg *blerg, uint64_t record, char **data, int *length);
 uint64_t blerg_get_record_count(struct blerg *);
-time_t blerg_get_timestamp(struct blerg *blerg, int record);
+time_t   blerg_get_timestamp(struct blerg *blerg, uint64_t record);
+int      blerg_set_subscription_mark(struct blerg *blerg);
+uint64_t blerg_get_subscription_mark(struct blerg *blerg);
+int      blerg_set_status(struct blerg *blerg, uint32_t status, int v);
+int      blerg_get_status(struct blerg *blerg, uint32_t status);
 
 #endif //_DATABASE_H