Example #1
0
        public StreamBlobDatabase(bool onDisk, long capacity, StreamBlobDatabaseBufferManager mBufferManage)
        {
            _mBufferManage = mBufferManage;
            _mCapacity     = capacity;
            if (onDisk)
            {
                var path = TempFileManager.GetTempFilename("rewindbuf");

                // I checked the DeleteOnClose operation to make sure it cleans up when the process is aborted, and it seems to.
                // Otherwise we would have a more complex tempfile management problem here.
                // 4KB buffer chosen due to similarity to .net defaults, and fear of anything larger making hiccups for small systems (we could try asyncing this stuff though...)
                _mStream = new FileStream(path, FileMode.Create, System.Security.AccessControl.FileSystemRights.FullControl, FileShare.None, 4 * 1024, FileOptions.DeleteOnClose);
            }
            else
            {
                _mAllocatedBuffer = _mBufferManage(null, ref _mCapacity, true);
                _mStream          = new MemoryStream(_mAllocatedBuffer);
            }
        }
Example #2
0
        public StreamBlobDatabase(bool onDisk, long capacity, StreamBlobDatabaseBufferManager mBufferManage)
        {
            _mBufferManage = mBufferManage;
            _mCapacity = capacity;
            if (onDisk)
            {
                var path = Path.Combine(Path.GetTempPath(), "bizhawk.rewindbuf-pid" + System.Diagnostics.Process.GetCurrentProcess().Id + "-" + Guid.NewGuid());

                // I checked the DeleteOnClose operation to make sure it cleans up when the process is aborted, and it seems to.
                // Otherwise we would have a more complex tempfile management problem here.
                // 4KB buffer chosen due to similarity to .net defaults, and fear of anything larger making hiccups for small systems (we could try asyncing this stuff though...)
                _mStream = new FileStream(path, FileMode.Create, System.Security.AccessControl.FileSystemRights.FullControl, FileShare.None, 4 * 1024, FileOptions.DeleteOnClose);
            }
            else
            {
                _mAllocatedBuffer = _mBufferManage(null, ref capacity, true);
                _mStream = new MemoryStream(_mAllocatedBuffer);
            }
        }