/* $Id: hisv6.h 8571 2009-08-17 19:10:07Z iulius $
**
** Internal history API interface exposed to HISxxx
*/

#ifndef HISV6_H
#define HISV6_H

struct token;
struct histopts;
struct history;

void *hisv6_open(const char *path, int flags, struct history *);

bool hisv6_close(void *);

bool hisv6_sync(void *);

bool hisv6_lookup(void *, const char *key, time_t *arrived,
		  time_t *posted, time_t *expires, struct token *token);

bool hisv6_check(void *, const char *key);

bool hisv6_write(void *, const char *key, time_t arrived,
		 time_t posted, time_t expires, const struct token *token);

bool hisv6_replace(void *, const char *key, time_t arrived,
		 time_t posted, time_t expires, const struct token *token);

bool hisv6_expire(void *, const char *, const char *, bool,
		  void *, time_t threshold,
		  bool (*exists)(void *, time_t, time_t, time_t,
				 struct token *));

bool hisv6_walk(void *, const char *, void *,
		bool (*)(void *, time_t, time_t, time_t,
			 const struct token *));

const char *hisv6_error(void *);

bool hisv6_remember(void *, const char *key, time_t arrived, time_t posted);

bool hisv6_ctl(void *, int, void *);

#endif
