annotate src/lib-dict/dict-private.h @ 22652:09523ad05bef

director: Log whenever HOST-RESET-USERS is used
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Sun, 05 Nov 2017 22:53:23 +0200
parents b74ab3872a80
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6410
e4eb71ae8e96 Changed .h ifdef/defines to use <NAME>_H format.
Timo Sirainen <tss@iki.fi>
parents: 4517
diff changeset
1 #ifndef DICT_PRIVATE_H
e4eb71ae8e96 Changed .h ifdef/defines to use <NAME>_H format.
Timo Sirainen <tss@iki.fi>
parents: 4517
diff changeset
2 #define DICT_PRIVATE_H
3737
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3
21379
2efa6abf97df lib-dict: Add dict_transaction_set_timestamp()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20884
diff changeset
4 #include <time.h>
3737
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5 #include "dict.h"
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7 struct dict_vfuncs {
15067
9bff478f81fd dict_init() API changed to return int.
Timo Sirainen <tss@iki.fi>
parents: 14906
diff changeset
8 int (*init)(struct dict *dict_driver, const char *uri,
17751
77e71a45a475 lib-dict: Changed dict.init() API to take struct dict_settings and added dict_init_full().
Timo Sirainen <tss@iki.fi>
parents: 17043
diff changeset
9 const struct dict_settings *set,
15218
22c22d704422 lib-dict: dict_init() now returns error string instead of logging it
Timo Sirainen <tss@iki.fi>
parents: 15067
diff changeset
10 struct dict **dict_r, const char **error_r);
3737
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11 void (*deinit)(struct dict *dict);
9889
0f7b25f3e2ce dict: Added support for async commits. Changed dict_atomic_inc() behavior.
Timo Sirainen <tss@iki.fi>
parents: 9545
diff changeset
12 int (*wait)(struct dict *dict);
3737
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13
3787
40600601502e Added dictinary lookup server and a "proxy" dict implementation to talk to
Timo Sirainen <tss@iki.fi>
parents: 3737
diff changeset
14 int (*lookup)(struct dict *dict, pool_t pool,
40600601502e Added dictinary lookup server and a "proxy" dict implementation to talk to
Timo Sirainen <tss@iki.fi>
parents: 3737
diff changeset
15 const char *key, const char **value_r);
3737
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 struct dict_iterate_context *
10752
6aa76d89195d dict: Added dict_iterate_init_multiple().
Timo Sirainen <tss@iki.fi>
parents: 10659
diff changeset
18 (*iterate_init)(struct dict *dict, const char *const *paths,
4516
aa2f73a4df26 Dictionary changes: Added support for defining value's type. Key is still always a string. Added support for sorting the iteration replies. Added dict_unset(). Added Berkeley DB support. Most of the code written by Tianyan Liu.
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4511
diff changeset
19 enum dict_iterate_flags flags);
10659
7309b5c84ca9 lib-dict: Changed dict_iterate API.
Timo Sirainen <tss@iki.fi>
parents: 9889
diff changeset
20 bool (*iterate)(struct dict_iterate_context *ctx,
7309b5c84ca9 lib-dict: Changed dict_iterate API.
Timo Sirainen <tss@iki.fi>
parents: 9889
diff changeset
21 const char **key_r, const char **value_r);
7309b5c84ca9 lib-dict: Changed dict_iterate API.
Timo Sirainen <tss@iki.fi>
parents: 9889
diff changeset
22 int (*iterate_deinit)(struct dict_iterate_context *ctx);
3737
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
23
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
24 struct dict_transaction_context *(*transaction_init)(struct dict *dict);
8660
d8a56ea9f408 Added dict_transaction_commit_async().
Timo Sirainen <tss@iki.fi>
parents: 8300
diff changeset
25 int (*transaction_commit)(struct dict_transaction_context *ctx,
9889
0f7b25f3e2ce dict: Added support for async commits. Changed dict_atomic_inc() behavior.
Timo Sirainen <tss@iki.fi>
parents: 9545
diff changeset
26 bool async,
0f7b25f3e2ce dict: Added support for async commits. Changed dict_atomic_inc() behavior.
Timo Sirainen <tss@iki.fi>
parents: 9545
diff changeset
27 dict_transaction_commit_callback_t *callback,
0f7b25f3e2ce dict: Added support for async commits. Changed dict_atomic_inc() behavior.
Timo Sirainen <tss@iki.fi>
parents: 9545
diff changeset
28 void *context);
3737
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
29 void (*transaction_rollback)(struct dict_transaction_context *ctx);
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
30
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
31 void (*set)(struct dict_transaction_context *ctx,
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
32 const char *key, const char *value);
4516
aa2f73a4df26 Dictionary changes: Added support for defining value's type. Key is still always a string. Added support for sorting the iteration replies. Added dict_unset(). Added Berkeley DB support. Most of the code written by Tianyan Liu.
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4511
diff changeset
33 void (*unset)(struct dict_transaction_context *ctx,
aa2f73a4df26 Dictionary changes: Added support for defining value's type. Key is still always a string. Added support for sorting the iteration replies. Added dict_unset(). Added Berkeley DB support. Most of the code written by Tianyan Liu.
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4511
diff changeset
34 const char *key);
14900
87e14707d210 dict: Implemented dict_append()
Timo Sirainen <tss@iki.fi>
parents: 14808
diff changeset
35 void (*append)(struct dict_transaction_context *ctx,
87e14707d210 dict: Implemented dict_append()
Timo Sirainen <tss@iki.fi>
parents: 14808
diff changeset
36 const char *key, const char *value);
3737
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
37 void (*atomic_inc)(struct dict_transaction_context *ctx,
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
38 const char *key, long long diff);
19064
d40d7f24ffcf lib-dict: Added async API for lookup and iteration.
Timo Sirainen <tss@iki.fi>
parents: 17751
diff changeset
39
d40d7f24ffcf lib-dict: Added async API for lookup and iteration.
Timo Sirainen <tss@iki.fi>
parents: 17751
diff changeset
40 void (*lookup_async)(struct dict *dict, const char *key,
d40d7f24ffcf lib-dict: Added async API for lookup and iteration.
Timo Sirainen <tss@iki.fi>
parents: 17751
diff changeset
41 dict_lookup_callback_t *callback, void *context);
20341
b9a3058184f1 lib-dict: Added dict_switch_ioloop()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19064
diff changeset
42 bool (*switch_ioloop)(struct dict *dict);
21379
2efa6abf97df lib-dict: Add dict_transaction_set_timestamp()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20884
diff changeset
43 void (*set_timestamp)(struct dict_transaction_context *ctx,
2efa6abf97df lib-dict: Add dict_transaction_set_timestamp()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20884
diff changeset
44 const struct timespec *ts);
3737
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
45 };
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
46
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
47 struct dict {
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 const char *name;
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
49
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
50 struct dict_vfuncs v;
21413
91187182279c lib-dict: Add assert to make sure all iterators are deinitialized.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21379
diff changeset
51 unsigned int iter_count;
21801
62499b1abc68 lib-dict: Track transaction counts
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21797
diff changeset
52 unsigned int transaction_count;
21836
b74ab3872a80 lib-dict: Keep a linked list of all transactions in dict.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21801
diff changeset
53 struct dict_transaction_context *transactions;
3737
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
54 };
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
55
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
56 struct dict_iterate_context {
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
57 struct dict *dict;
19064
d40d7f24ffcf lib-dict: Added async API for lookup and iteration.
Timo Sirainen <tss@iki.fi>
parents: 17751
diff changeset
58
d40d7f24ffcf lib-dict: Added async API for lookup and iteration.
Timo Sirainen <tss@iki.fi>
parents: 17751
diff changeset
59 dict_iterate_callback_t *async_callback;
d40d7f24ffcf lib-dict: Added async API for lookup and iteration.
Timo Sirainen <tss@iki.fi>
parents: 17751
diff changeset
60 void *async_context;
d40d7f24ffcf lib-dict: Added async API for lookup and iteration.
Timo Sirainen <tss@iki.fi>
parents: 17751
diff changeset
61
d40d7f24ffcf lib-dict: Added async API for lookup and iteration.
Timo Sirainen <tss@iki.fi>
parents: 17751
diff changeset
62 unsigned int has_more:1;
20884
c9e829c8a36f lib-dict: Added dict_iterate_set_limit()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20668
diff changeset
63 uint64_t row_count, max_rows;
3737
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
64 };
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
65
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
66 struct dict_transaction_context {
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
67 struct dict *dict;
21836
b74ab3872a80 lib-dict: Keep a linked list of all transactions in dict.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21801
diff changeset
68 struct dict_transaction_context *prev, *next;
4511
3f808dd8f568 If invalid key is given to dict_set() or dict_atomic_inc() fail the whole
Timo Sirainen <tss@iki.fi>
parents: 3967
diff changeset
69
21379
2efa6abf97df lib-dict: Add dict_transaction_set_timestamp()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20884
diff changeset
70 struct timespec timestamp;
2efa6abf97df lib-dict: Add dict_transaction_set_timestamp()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20884
diff changeset
71
4511
3f808dd8f568 If invalid key is given to dict_set() or dict_atomic_inc() fail the whole
Timo Sirainen <tss@iki.fi>
parents: 3967
diff changeset
72 unsigned int changed:1;
20668
44c049b65011 lib-dict: Added dict_transaction_no_slowness_warning()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20341
diff changeset
73 unsigned int no_slowness_warning:1;
3737
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
74 };
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
75
14786
211fbc872ed4 lib-dict: Added initial version of Redis support.
Timo Sirainen <tss@iki.fi>
parents: 10752
diff changeset
76 extern struct dict dict_driver_client;
8300
9d963e3bbe65 Added a simple flat file dict backend.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
77 extern struct dict dict_driver_file;
17043
773e9ce608ed lib-dict: Added "fs" wrapper dict backend, which uses lib-fs.
Timo Sirainen <tss@iki.fi>
parents: 15665
diff changeset
78 extern struct dict dict_driver_fs;
14808
b6df5871632a lib-dict: Added memcached backend using its binary protocol.
Timo Sirainen <tss@iki.fi>
parents: 14786
diff changeset
79 extern struct dict dict_driver_memcached;
14906
96a9a086c052 lib-dict: Added memcached_ascii backend.
Timo Sirainen <tss@iki.fi>
parents: 14900
diff changeset
80 extern struct dict dict_driver_memcached_ascii;
14786
211fbc872ed4 lib-dict: Added initial version of Redis support.
Timo Sirainen <tss@iki.fi>
parents: 10752
diff changeset
81 extern struct dict dict_driver_redis;
15665
2c249941f9c2 dict: Added support for cdb backend.
Timo Sirainen <tss@iki.fi>
parents: 15218
diff changeset
82 extern struct dict dict_driver_cdb;
21797
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21413
diff changeset
83 extern struct dict dict_driver_fail;
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21413
diff changeset
84
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21413
diff changeset
85 extern struct dict_iterate_context dict_iter_unsupported;
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21413
diff changeset
86 extern struct dict_transaction_context dict_transaction_unsupported;
8300
9d963e3bbe65 Added a simple flat file dict backend.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
87
3737
d67092398377 Added dictionary API and implementation for SQL. It's meant for looking and
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
88 #endif