00001 00008 #pragma once 00009 00010 #include "include/file.h" 00011 00012 namespace wiscdb { 00013 00017 struct HashItem { 00021 File *file; 00022 00026 PageId pageNo; 00027 00031 FrameId frameNo; 00032 00036 HashItem* next; 00037 }; 00038 00039 00043 class BufferHashTable 00044 { 00045 private: 00049 int SIZE; 00053 HashItem** table; 00054 00062 int hash(const File* file, const PageId pageNo); 00063 00064 public: 00068 BufferHashTable(const int htSize); 00069 00073 ~BufferHashTable(); 00074 00085 void insert(const File* file, const PageId pageNo, const FrameId frameNo); 00086 00097 void lookup(const File* file, const PageId pageNo, FrameId &frameNo); 00098 00108 void remove(const File* file, const PageId pageNo); 00109 }; 00110 00111 }