/// <summary> /// Create new log instance /// </summary> /// <param name="logSettings"></param> public FasterLog(FasterLogSettings logSettings) { bool oldCommitManager = false; if (oldCommitManager) { logCommitManager = logSettings.LogCommitManager ?? new LocalLogCommitManager(logSettings.LogCommitFile ?? logSettings.LogDevice.FileName + ".commit"); } else { logCommitManager = logSettings.LogCommitManager ?? new DeviceLogCommitCheckpointManager (new LocalStorageNamedDeviceFactory(), new DefaultCheckpointNamingScheme( new FileInfo(logSettings.LogDevice.FileName).Directory.FullName)); } if (logSettings.LogCommitManager == null) { disposeLogCommitManager = true; } // Reserve 8 byte checksum in header if requested logChecksum = logSettings.LogChecksum; headerSize = logChecksum == LogChecksumType.PerEntry ? 12 : 4; getMemory = logSettings.GetMemory; epoch = new LightEpoch(); CommittedUntilAddress = Constants.kFirstValidAddress; CommittedBeginAddress = Constants.kFirstValidAddress; SafeTailAddress = Constants.kFirstValidAddress; allocator = new BlittableAllocator <Empty, byte>( logSettings.GetLogSettings(), null, null, epoch, CommitCallback); allocator.Initialize(); // FasterLog is used as a read-only iterator if (logSettings.ReadOnlyMode) { readOnlyMode = true; allocator.HeadAddress = long.MaxValue; } Restore(out RecoveredIterators); }
/// <summary> /// Create new log instance /// </summary> /// <param name="logSettings"></param> public FasterLog(FasterLogSettings logSettings) { logCommitManager = logSettings.LogCommitManager ?? new LocalLogCommitManager(logSettings.LogCommitFile ?? logSettings.LogDevice.FileName + ".commit"); // Reserve 8 byte checksum in header if requested logChecksum = logSettings.LogChecksum; headerSize = logChecksum == LogChecksumType.PerEntry ? 12 : 4; getMemory = logSettings.GetMemory; epoch = new LightEpoch(); CommittedUntilAddress = Constants.kFirstValidAddress; CommittedBeginAddress = Constants.kFirstValidAddress; allocator = new BlittableAllocator <Empty, byte>( logSettings.GetLogSettings(), null, null, epoch, CommitCallback); allocator.Initialize(); Restore(out RecoveredIterators); }