📄 buffermanager.h
字号:
// BufferManager.h: interface for the BufferManager class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_BUFFERMANAGER_H__9600F8CE_F199_4B7C_B709_C5FEB9B8EA85__INCLUDED_)
#define AFX_BUFFERMANAGER_H__9600F8CE_F199_4B7C_B709_C5FEB9B8EA85__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define BLOCK_SIZE (4 * 1024)
#define BLOCK_TABLE_SIZE (1024 * 1024)
#define IN_MEM_SIZE (1024 * 1024)
#define IN_MEM_BLOCKS (IN_MEM_SIZE / BLOCK_SIZE)
class BufferManager
{
public:
BufferManager();
virtual ~BufferManager();
private:
int fileDesc;
char *buffer;
struct BlockEntry
{
unsigned inMemLocation : 16;
unsigned dirtyFlag : 1;
unsigned lockedFlag : 1;
} *blockTable;
int *inMemQueue;
int front, rear, qsize;
int *usedTable;
private:
int findReplacement();
void dequeue();
void enqueue(int blockNum);
int bringBlock(int blockNum, int inMem);
int seekBlock(int blockNum);
int flushBlock(int blockNum);
bool isQueueEmpty();
bool isQueueFull();
int removeBlock();
long getFileSize();
public:
int unlockBlock(int blockNum);
int lockBlock(int blockNum);
int finalize();
int writeBlock(int blockNum);
int initialize(char *dataFile);
char *readBlock(int blockNum);
};
#endif // !defined(AFX_BUFFERMANAGER_H__9600F8CE_F199_4B7C_B709_C5FEB9B8EA85__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -