HEX
Server: Apache/2
System: Linux ctr1224126.novalocal 4.9.241-37.el7.x86_64 #1 SMP Mon Nov 2 13:55:04 UTC 2020 x86_64
User: gokitchen (1017)
PHP: 8.0.30
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/include/dovecot/dict-transaction-memory.h
#ifndef DICT_TRANSACTION_MEMORY_H
#define DICT_TRANSACTION_MEMORY_H

#include "dict-private.h"

enum dict_change_type {
	DICT_CHANGE_TYPE_SET,
	DICT_CHANGE_TYPE_UNSET,
	DICT_CHANGE_TYPE_INC
};

struct dict_transaction_memory_change {
	enum dict_change_type type;
	const char *key;
	union {
		const char *str;
		long long diff;
	} value;
};

struct dict_transaction_memory_context {
	struct dict_transaction_context ctx;
	pool_t pool;
	ARRAY(struct dict_transaction_memory_change) changes;
};

void dict_transaction_memory_init(struct dict_transaction_memory_context *ctx,
				  struct dict *dict, pool_t pool);
void dict_transaction_memory_rollback(struct dict_transaction_context *ctx);

void dict_transaction_memory_set(struct dict_transaction_context *ctx,
				 const char *key, const char *value);
void dict_transaction_memory_unset(struct dict_transaction_context *ctx,
				   const char *key);
void dict_transaction_memory_atomic_inc(struct dict_transaction_context *ctx,
					const char *key, long long diff);

#endif