forked from deniskin82/httpsqs
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhttpsqs.h
More file actions
77 lines (62 loc) · 1.94 KB
/
httpsqs.h
File metadata and controls
77 lines (62 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#ifndef HTTPSQS_H_
#define HTTPSQS_H_
#define _GNU_SOURCE
#include <sys/types.h>
#include <sys/time.h>
#include <sys/queue.h>
#include <sys/types.h>
#include <ctype.h>
#include <stdio.h>
#include <strings.h>
#include <stdint.h>
#include <err.h>
#include <event.h>
#include <evhttp.h>
#include "rbtree.h"
#define SQS_VERSION "1.3.2.panda"
//YDB httpsqs_db_tcbdb;
//const char *httpsqs_settings_pidfile;
struct sqs_queue_status {
char name[11];
size_t name_sz;
uint64_t tail_id;
uint64_t head_id;
uint32_t maxqueue;
uint32_t count;
uint64_t count_bytes;
/* Totals for the lifetime of the queue */
uint64_t total_get;
uint64_t total_put;
uint64_t total_info;
uint64_t total_get_bytes;
uint64_t total_put_bytes;
/* RB node */
struct rb_node rbnode;
};
struct httpsqs;
struct httpsqs_db {
void *internal_handle;
int (*del)(struct httpsqs *h, const char *key, size_t key_sz);
int (*add)(struct httpsqs *h, const char *key, size_t key_sz, char *value, size_t value_sz);
int (*get)(struct httpsqs *h, const char *key, size_t key_sz, char **value, size_t *value_sz);
void (*close)(struct httpsqs *h);
int (*open)(struct httpsqs *h);
// Optional methods
void (*sync)(struct httpsqs *h);
// void (*prefetch)(struct httpsqs *h, const char **keys, size_t *key_szs, size_t item_count);
};
struct httpsqs {
struct evkeyvalq params;
struct httpsqs_db *db;
struct rb_root queues;
struct evhttp *httpd;
};
struct httpsqs_db *httpsqs_get_db(struct httpsqs *h);
void* httpsqs_get_db_internal(struct httpsqs *h);
const char *httpsqs_get_option(struct httpsqs* h, const char *name, const char *default_value);
int httpsqs_get_option_bool(struct httpsqs* h, const char *name, int default_value);
int httpsqs_get_option_int(struct httpsqs *h, const char *name, int default_value);
int httpsqs_set_option(struct httpsqs* h, const char *name, const char *value);
// Defined in whichever DB handler you're using
struct httpsqs_db *db_init(struct httpsqs *h);
#endif