summaryrefslogtreecommitdiffstats
path: root/pigeonhole/src/lib-sieve/sieve-execute.h
blob: 8af182b43061b4b1cfe10276145c041f65584f6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef SIEVE_EXECUTE_H
#define SIEVE_EXECUTE_H

#include "sieve-common.h"

struct sieve_execute_state;

struct sieve_execute_env {
	struct sieve_instance *svinst;
	pool_t pool;

	enum sieve_execute_flags flags;
	struct event *event;

	const struct sieve_message_data *msgdata;
	const struct sieve_script_env *scriptenv;

	struct sieve_execute_state *state;
	struct sieve_exec_status *exec_status;
};

void sieve_execute_init(struct sieve_execute_env *eenv,
			struct sieve_instance *svinst, pool_t pool,
			const struct sieve_message_data *msgdata,
			const struct sieve_script_env *senv,
			enum sieve_execute_flags flags);
void sieve_execute_finish(struct sieve_execute_env *eenv, int status);
void sieve_execute_deinit(struct sieve_execute_env *eenv);

/*
 * Checking for duplicates
 */

bool sieve_execute_duplicate_check_available(
	const struct sieve_execute_env *eenv);
int sieve_execute_duplicate_check(const struct sieve_execute_env *eenv,
				  const void *id, size_t id_size,
				  bool *duplicate_r);
void sieve_execute_duplicate_mark(const struct sieve_execute_env *eenv,
				  const void *id, size_t id_size, time_t time);

#endif