view src/lib-dict/dict-client.h @ 22325:e01bc3015b2f

lib-index: Check .log.2 rotation only when syncing Instead of also whenever appending transactions to .log file. This shouldn't change the behavior much, and it's needed for the following change to work correctly.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Tue, 11 Jul 2017 15:33:56 +0300
parents dc86507721f9
children
line wrap: on
line source

#ifndef DICT_CLIENT_H
#define DICT_CLIENT_H

#include "dict.h"

#define DEFAULT_DICT_SERVER_SOCKET_FNAME "dict"

#define DICT_CLIENT_PROTOCOL_MAJOR_VERSION 2
#define DICT_CLIENT_PROTOCOL_MINOR_VERSION 2

#define DICT_CLIENT_PROTOCOL_VERSION_MIN_MULTI_OK 2

#define DICT_CLIENT_MAX_LINE_LENGTH (64*1024)

enum dict_protocol_cmd {
        /* <major-version> <minor-version> <value type> <user> <dict name> */
	DICT_PROTOCOL_CMD_HELLO = 'H',

	DICT_PROTOCOL_CMD_LOOKUP = 'L', /* <key> */
	DICT_PROTOCOL_CMD_ITERATE = 'I', /* <flags> <path> */

	DICT_PROTOCOL_CMD_BEGIN = 'B', /* <id> */
	DICT_PROTOCOL_CMD_COMMIT = 'C', /* <id> */
	DICT_PROTOCOL_CMD_COMMIT_ASYNC = 'D', /* <id> */
	DICT_PROTOCOL_CMD_ROLLBACK = 'R', /* <id> */

	DICT_PROTOCOL_CMD_SET = 'S', /* <id> <key> <value> */
	DICT_PROTOCOL_CMD_UNSET = 'U', /* <id> <key> */
	DICT_PROTOCOL_CMD_APPEND = 'P', /* <id> <key> <value> */
	DICT_PROTOCOL_CMD_ATOMIC_INC = 'A', /* <id> <key> <diff> */
	DICT_PROTOCOL_CMD_TIMESTAMP = 'T', /* <id> <secs> <nsecs> */
};

enum dict_protocol_reply {
	DICT_PROTOCOL_REPLY_ERROR = -1,

	DICT_PROTOCOL_REPLY_OK = 'O', /* <value> */
	DICT_PROTOCOL_REPLY_MULTI_OK = 'M', /* protocol v2.2+ */
	DICT_PROTOCOL_REPLY_NOTFOUND = 'N',
	DICT_PROTOCOL_REPLY_FAIL = 'F',
	DICT_PROTOCOL_REPLY_WRITE_UNCERTAIN = 'W',
	DICT_PROTOCOL_REPLY_ASYNC_COMMIT = 'A',
	DICT_PROTOCOL_REPLY_ITER_FINISHED = '\0',
	DICT_PROTOCOL_REPLY_ASYNC_ID = '*',
	DICT_PROTOCOL_REPLY_ASYNC_REPLY = '+',
};

const char *dict_client_escape(const char *src);
const char *dict_client_unescape(const char *src);

#endif