예제 #1
0
        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));
        }
예제 #2
0
        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;
            }
        }