X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=bfile%2Fcfile.h;h=ef0a692ddced1b46021c89d5e2fde90134fd17a9;hb=c41c84a497ae744aa825a90f144c85b54f1cd4bb;hp=9ee9714afbd6abf10e24d8956e7f25a8ed587cda;hpb=7edae22b5d556f3db505615888ef02b950dd5e83;p=idzebra-moved-to-github.git diff --git a/bfile/cfile.h b/bfile/cfile.h index 9ee9714..ef0a692 100644 --- a/bfile/cfile.h +++ b/bfile/cfile.h @@ -1,50 +1,29 @@ /* - * Copyright (C) 1995, Index Data I/S + * Copyright (C) 1995-1999, Index Data * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * - * $Log: cfile.h,v $ - * Revision 1.8 1996-04-18 16:02:56 adam - * Changed logging a bit. - * Removed warning message when commiting flat shadow files. - * - * Revision 1.7 1996/02/07 14:03:48 adam - * Work on flat indexed shadow files. - * - * Revision 1.6 1996/02/07 10:08:45 adam - * Work on flat shadow (not finished yet). - * - * Revision 1.5 1995/12/15 12:36:52 adam - * Moved hash file information to union. - * Renamed commit files. - * - * Revision 1.4 1995/12/11 09:03:54 adam - * New function: cf_unlink. - * New member of commit file head: state (0) deleted, (1) hash file. - * - * Revision 1.3 1995/12/01 16:24:29 adam - * Commit files use separate meta file area. - * - * Revision 1.2 1995/12/01 11:37:23 adam - * Cached/commit files implemented as meta-files. - * - * Revision 1.1 1995/11/30 08:33:12 adam - * Started work on commit facility. - * + * $Id: cfile.h,v 1.13 2000-03-20 19:08:35 adam Exp $ */ #ifndef CFILE_H #define CFILE_H +#include + +YAZ_BEGIN_CDECL + #define HASH_BUCKET 15 +struct CFile_ph_bucket { /* structure on disc */ + int no[HASH_BUCKET]; /* block number in original file */ + int vno[HASH_BUCKET]; /* block number in shadow file */ + int this_bucket; /* this bucket number */ + int next_bucket; /* next bucket number */ +}; + struct CFile_hash_bucket { - struct CFile_ph_bucket { - int no[HASH_BUCKET]; - int vno[HASH_BUCKET]; - int this_bucket; - int next_bucket; - } ph; + struct CFile_ph_bucket ph; int dirty; struct CFile_hash_bucket *h_next, **h_prev; struct CFile_hash_bucket *lru_next, *lru_prev; @@ -57,13 +36,13 @@ struct CFile_hash_bucket { typedef struct CFile_struct { struct CFile_head { - int state; - int next_block; - int block_size; - int hash_size; - int first_bucket; - int next_bucket; - int flat_bucket; + int state; /* 1 = hash, 2 = flat */ + int next_block; /* next free block / last block */ + int block_size; /* mfile/bfile block size */ + int hash_size; /* no of chains in hash table */ + int first_bucket; /* first hash bucket */ + int next_bucket; /* last hash bucket + 1 = first flat bucket */ + int flat_bucket; /* last flat bucket + 1 */ } head; MFile block_mf; MFile hash_mf; @@ -77,14 +56,17 @@ typedef struct CFile_struct MFile rmf; int no_hits; int no_miss; + Zebra_mutex mutex; } *CFile; int cf_close (CFile cf); CFile cf_open (MFile mf, MFile_area area, const char *fname, int block_size, int wflag, int *firstp); -int cf_read (CFile cf, int no, int offset, int num, void *buf); -int cf_write (CFile cf, int no, int offset, int num, const void *buf); +int cf_read (CFile cf, int no, int offset, int nbytes, void *buf); +int cf_write (CFile cf, int no, int offset, int nbytes, const void *buf); void cf_unlink (CFile cf); void cf_commit (CFile cf); +YAZ_END_CDECL + #endif