public int size(string filename) {//返回指定文件的block数目,在要求文件管理器返回数目之前,先加 S 锁到“end of the file”块上 Block dummyblk = new Block(filename, END_OF_FILE); concurMgr.sLock(dummyblk); return(SimpleDB.fileMgr().size(filename)); }
public LogMgr(string logfile) {/* 为制定日志文件创建的管理器,如果日志文件不存在,会用一个空的第一个块创建 * 这个构造函数依赖于一个 FileMgr 的 object 对象(来自server.SimpleDB.filemgr创建于系统初始化时) * 所以这个构造函数必须要通过先调用server.SimpleDB.initFileMgr之后才能调用*/ this.logfile = logfile; int logsize = SimpleDB.fileMgr().size(logfile); if (logsize == 0) { appendNewBlock(); } else { currentblk = new Block(logfile, logsize - 1); mypage.read(currentblk); currentpos = getLastRecordPosition() + Page.INT_SIZE; } }