//public static string Title(Customer c) //{ // return c.CreateTitle($"{PartTitle(c)}, {c.AccountNumber}"); //} private static string PartTitle(Customer c) { return(IsStore(c) ? StoreFunctions.Title(c.Store) : PersonFunctions.Title(c.Person)); }
public FasterStore(IOptions <FasterStoreOptions> optionsProvider, IFasterEqualityComparer <TKey> keyComparer, ILogger <FasterStore <TKey, TValue> > logger) { _logger = logger; var options = optionsProvider.Value; var indexStorePath = Path.Combine(options.Directory, $"{options.Name}-index.log"); var objectStorePath = Path.Combine(options.Directory, $"{options.Name}-object.log"); _indexDevice = Devices.CreateLogDevice(indexStorePath, preallocateFile: false, deleteOnClose: false, recoverDevice: true); _objectDevice = Devices.CreateLogDevice(objectStorePath, preallocateFile: false, deleteOnClose: false, recoverDevice: true); _checkpointsPath = Path.Combine(options.Directory, "checkpoints"); if (!Directory.Exists(_checkpointsPath)) { _logger.LogInformation("Checkpoints directory not exists. Creating..."); Directory.CreateDirectory(_checkpointsPath); } var logSettings = new LogSettings { LogDevice = _indexDevice, ObjectLogDevice = _objectDevice, MemorySizeBits = (int)options.MemorySize, PageSizeBits = (int)options.PageSize, SegmentSizeBits = (int)options.SegmentSize, ReadCacheSettings = new ReadCacheSettings() { MemorySizeBits = (int)options.MemorySize + 1, PageSizeBits = (int)options.PageSize + 1, SecondChanceFraction = .2 } }; _serializerSettings = new SerializerSettings <KeyHolder, ValueHolder> { keySerializer = () => new KeySerializer(options.JsonOptions), valueSerializer = () => new ValueSerializer(options.JsonOptions) }; var comparer = new KeyComparerAdapter(keyComparer); var functions = new StoreFunctions(_logger); var checkpointsSettings = new CheckpointSettings { CheckpointDir = _checkpointsPath, CheckPointType = CheckpointType.Snapshot }; _keyValueStore = new FasterKV <KeyHolder, ValueHolder, ValueHolder, ValueHolder, StoreContext, StoreFunctions>( StoreSize, functions, logSettings, checkpointsSettings, _serializerSettings, comparer); var checkpoints = Directory.GetDirectories(_checkpointsPath).Length; if (checkpoints > 0) { _logger.LogInformation($"Found {checkpoints} checkpoints. Recovering store..."); _keyValueStore.Recover(); _logger.LogInformation("Store recovered from checkpoints"); } _session = _keyValueStore.NewSession(); }