Mercurial > dovecot > core-2.2
view src/lib-index/mail-tree.h @ 903:fd8888f6f037 HEAD
Naming style changes, finally got tired of most of the typedefs. Also the
previous enum -> macro change reverted so that we don't use the highest bit
anymore, that's incompatible with old indexes so they will be rebuilt.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 05 Jan 2003 15:09:51 +0200 |
parents | eefa28ef9646 |
children | 6f65cc862649 |
line wrap: on
line source
#ifndef __MAIL_TREE_H #define __MAIL_TREE_H struct mail_tree { struct mail_index *index; int fd; char *filepath; void *mmap_base; struct mail_tree_node *node_base; size_t mmap_used_length; size_t mmap_full_length; size_t mmap_highwater; /* for msync()ing */ struct mail_tree_header *header; unsigned int sync_id; unsigned int anon_mmap:1; unsigned int modified:1; }; struct mail_tree_header { unsigned int indexid; unsigned int sync_id; uoff_t used_file_size; unsigned int root; }; struct mail_tree_node { unsigned int left; unsigned int right; unsigned int up; /* number of child nodes + 1, used to figure out message sequence numbers. also highest bit specifies if the node is red or black */ unsigned int node_count; unsigned int key; unsigned int value; }; int mail_tree_create(struct mail_index *index); int mail_tree_open_or_create(struct mail_index *index); void mail_tree_free(struct mail_tree *tree); int mail_tree_rebuild(struct mail_tree *tree); int mail_tree_sync_file(struct mail_tree *tree, int *fsync_fd); /* Find first existing UID in range. Returns (unsigned int)-1 if not found. */ unsigned int mail_tree_lookup_uid_range(struct mail_tree *tree, unsigned int *seq_r, unsigned int first_uid, unsigned int last_uid); /* Find message by sequence number. Returns (unsigned int)-1 if not found. */ unsigned int mail_tree_lookup_sequence(struct mail_tree *tree, unsigned int seq); /* Insert a new record in tree. */ int mail_tree_insert(struct mail_tree *tree, unsigned int uid, unsigned int index); /* Update existing record in tree. */ int mail_tree_update(struct mail_tree *tree, unsigned int uid, unsigned int index); /* Delete record from tree. */ void mail_tree_delete(struct mail_tree *tree, unsigned int uid); /* private: */ int _mail_tree_set_corrupted(struct mail_tree *tree, const char *fmt, ...) __attr_format__(2, 3); int _mail_tree_mmap_update(struct mail_tree *tree, int forced); int _mail_tree_grow(struct mail_tree *tree); void _mail_tree_truncate(struct mail_tree *tree); #endif