dict-private.h revision 31257b47d47510ceb093a6b218810a1a5b830c55
02c335c23bf5fa225a467c19f2c063fb0dc7b8c3Timo Sirainen#ifndef DICT_PRIVATE_H
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen#define DICT_PRIVATE_H
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen#include "dict.h"
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen
c2ee17c9c263efdc9c0a339c4836c3d43f5cd3d9Sascha Wildestruct dict_vfuncs {
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen struct dict *(*init)(struct dict *dict_driver, const char *uri,
cda217260716cfd8d8ec5e56f91708c64c140538Timo Sirainen enum dict_data_type value_type,
7a7d2aa11e46195e2d92d6c337d7e78052a5ce67Timo Sirainen const char *username, const char *base_dir);
d00ae137b6772f0b047cc98cb153f11c5246f82bTimo Sirainen void (*deinit)(struct dict *dict);
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen int (*wait)(struct dict *dict);
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen
c4c9be10781e1a16b3b001dc6b0461c4640da101Timo Sirainen int (*lookup)(struct dict *dict, pool_t pool,
c2ee17c9c263efdc9c0a339c4836c3d43f5cd3d9Sascha Wilde const char *key, const char **value_r);
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen struct dict_iterate_context *
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen (*iterate_init)(struct dict *dict, const char *const *paths,
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen enum dict_iterate_flags flags);
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen bool (*iterate)(struct dict_iterate_context *ctx,
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen const char **key_r, const char **value_r);
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen int (*iterate_deinit)(struct dict_iterate_context *ctx);
f325d795b52ce2053f914072b22ebca9c4f0dc7eTimo Sirainen
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen struct dict_transaction_context *(*transaction_init)(struct dict *dict);
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen int (*transaction_commit)(struct dict_transaction_context *ctx,
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen bool async,
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen dict_transaction_commit_callback_t *callback,
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen void *context);
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen void (*transaction_rollback)(struct dict_transaction_context *ctx);
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen void (*set)(struct dict_transaction_context *ctx,
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen const char *key, const char *value);
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen void (*unset)(struct dict_transaction_context *ctx,
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen const char *key);
708efcd8581258763289b95cde119ca9423641d8Timo Sirainen void (*atomic_inc)(struct dict_transaction_context *ctx,
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen const char *key, long long diff);
139cbf8d9e1cc0c65d985f525756fe47a7bfada6Timo Sirainen};
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainenstruct dict {
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen const char *name;
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen struct dict_vfuncs v;
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen};
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainenstruct dict_iterate_context {
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen struct dict *dict;
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen};
d29e35631075b8c172ce781b85fd1cdaf0a400fdTimo Sirainen
d29e35631075b8c172ce781b85fd1cdaf0a400fdTimo Sirainenstruct dict_transaction_context {
0f17bb103602d0c4394e3784cb96d788530fc79eTimo Sirainen struct dict *dict;
0f17bb103602d0c4394e3784cb96d788530fc79eTimo Sirainen
87ca4b209c10954826b878da165d303d9b4dc5a2Timo Sirainen unsigned int changed:1;
708efcd8581258763289b95cde119ca9423641d8Timo Sirainen};
708efcd8581258763289b95cde119ca9423641d8Timo Sirainen
708efcd8581258763289b95cde119ca9423641d8Timo Sirainenextern struct dict dict_driver_client;
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainenextern struct dict dict_driver_file;
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainenextern struct dict dict_driver_redis;
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen#endif
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen