Mercurial > dovecot > core-2.2
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 |
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 |