⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pager.h

📁 在VC6环境下开发
💻 H
字号:
/*
** The size of one page
**
** You can change this value to another (reasonable) value you want.
** It need not be a power of two, though the interface to the disk
** will likely be faster if it is.
**
** Experiments show that a page size of 1024 gives the best speed
** for common usages.  The speed differences for different sizes
** such as 512, 2048, 4096, an so forth, is minimal.  Note, however,
** that changing the page size results in a completely imcompatible
** file format.
*/
#ifndef _PAGER_H_
#define _PAGER_H_
#ifndef eDb_PAGE_SIZE
#define eDb_PAGE_SIZE PAGE_SIZE
#endif

/*
** Number of extra bytes of data allocated at the end of each page and
** stored on disk but not used by the higher level btree layer.  Changing
** this value results in a completely incompatible file format.
*/
#ifndef eDb_PAGE_RESERVE
#define eDb_PAGE_RESERVE 0
#endif

/*
** The total number of usable bytes stored on disk for each page.
** The usable bytes come at the beginning of the page and the reserve
** bytes come at the end.
*/
#define eDb_USABLE_SIZE (eDb_PAGE_SIZE-eDb_PAGE_RESERVE)

/*
** Maximum number of pages in one database.  (This is a limitation of
** imposed by 4GB files size limits.)
*/
#define eDb_MAX_PAGE 1073741823

/*
** The type used to represent a page number.  The first page in a file
** is called page 1.  0 is used to represent "not a page".
*/
typedef unsigned int Pgno;

/*
** Each open file is managed by a separate instance of the "Pager" structure.
*/
typedef struct Pager Pager;

/*
** See source code comments for a detailed description of the following
** routines:
*/
int eDbpager_open(Pager **ppPager, const char *zFilename,
                     int nPage, int nExtra, int useJournal);
int eDbpager_close(Pager *pPager);

void eDbpager_set_destructor(Pager*, void(*)(void*));
void eDbpager_set_cachesize(Pager*, int);
void eDbpager_set_safety_level(Pager*,int);
void eDbpager_set_codec(Pager*,void(*)(void*,void*,Pgno,int),void*);

int eDbpager_get(Pager *pPager, Pgno pgno, void **ppPage);
void *eDbpager_lookup(Pager *pPager, Pgno pgno);

int eDbpager_ref(void*);
int eDbpager_unref(void*);



int eDbpager_iswriteable(void*);
int eDbpager_isreadonly(Pager*);

int eDbpager_write(void*);
int eDbpager_overwrite(Pager *pPager, Pgno pgno, void*);

Pgno eDbpager_pagenumber(void*);
int eDbpager_pagecount(Pager*);
int *eDbpager_stats(Pager*);

int eDbpager_begin(void*);
int eDbpager_commit(Pager*);
int eDbpager_rollback(Pager*);

int eDbpager_ckpt_begin(Pager*);
int eDbpager_ckpt_commit(Pager*);
int eDbpager_ckpt_rollback(Pager*);

void eDbpager_dont_rollback(void*);
void eDbpager_dont_write(Pager*, Pgno);

const char *eDbpager_filename(Pager*);
int eDbpager_rename(Pager*, const char *zNewName);
int eDbpager_truncate(Pager*,Pgno);


#ifdef eDb_TEST
void eDbpager_refdump(Pager*);
int pager_refinfo_enable;
int journal_format;
#endif


#endif /*_PAGER_H_*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -