annotate src/lib-dict/dict-transaction-memory.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 a097ef0a9d6d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14905
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 #ifndef DICT_TRANSACTION_MEMORY_H
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2 #define DICT_TRANSACTION_MEMORY_H
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 #include "dict-private.h"
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6 enum dict_change_type {
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7 DICT_CHANGE_TYPE_SET,
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8 DICT_CHANGE_TYPE_UNSET,
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9 DICT_CHANGE_TYPE_APPEND,
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
10 DICT_CHANGE_TYPE_INC
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11 };
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13 struct dict_transaction_memory_change {
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14 enum dict_change_type type;
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
15 const char *key;
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16 union {
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 const char *str;
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
18 long long diff;
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
19 } value;
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
20 };
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
21
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
22 struct dict_transaction_memory_context {
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
23 struct dict_transaction_context ctx;
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
24 pool_t pool;
14920
a097ef0a9d6d Array API changed: ARRAY_DEFINE(name, type) -> ARRAY(type) name
Timo Sirainen <tss@iki.fi>
parents: 14905
diff changeset
25 ARRAY(struct dict_transaction_memory_change) changes;
14905
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
26 };
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
27
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
28 void dict_transaction_memory_init(struct dict_transaction_memory_context *ctx,
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
29 struct dict *dict, pool_t pool);
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
30 void dict_transaction_memory_rollback(struct dict_transaction_context *ctx);
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
31
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
32 void dict_transaction_memory_set(struct dict_transaction_context *ctx,
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
33 const char *key, const char *value);
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
34 void dict_transaction_memory_unset(struct dict_transaction_context *ctx,
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
35 const char *key);
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
36 void dict_transaction_memory_append(struct dict_transaction_context *_ctx,
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
37 const char *key, const char *value);
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
38 void dict_transaction_memory_atomic_inc(struct dict_transaction_context *ctx,
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
39 const char *key, long long diff);
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
40
e266c31ebd02 lib-dict: Moved "in-memory transaction" code from dict-file to more generic API.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
41 #endif