예제 #1
0
        protected Stream OpenDataFileStream(out FileStream lockFile)
        {
            Stream dataFile;

            if (!LockUtil.TryAquireWriteLock(_directory, out lockFile))
            {
                var dataFileName = Path.Combine(_directory, _version + ".rdb");

                dataFile = new FileStream(
                    dataFileName,
                    FileMode.CreateNew,
                    FileAccess.Write,
                    FileShare.ReadWrite,
                    4096
                    );
            }
            else
            {
                var ixFileName = LockUtil.GetFirstIndexFileNameInChronologicalOrder(_directory);

                long dataFileVersion = ixFileName == null ?
                                       _version.Version :
                                       long.Parse(Path.GetFileNameWithoutExtension(ixFileName));

                var dataFileName = Path.Combine(_directory, dataFileVersion + ".rdb");

                dataFile = new FileStream(
                    dataFileName,
                    FileMode.Append,
                    FileAccess.Write,
                    FileShare.ReadWrite,
                    4096
                    );
            }
            return(dataFile);
        }