/
githubmirror
/
Files
Обзор
Документация
Войти
/
githubmirror
/
Files
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Files.App/Data/AppModels/BaseDatabaseModel.cs
42 строки
1 KB
Steve
Feature: LiteDB server and Files.Core removal (#14911)
03 апр 2024, 18:19
Не верифицирован
03 апр 2024, 18:19
a0acba3
Код
Авторство
О чём код?
using Files.Shared.Utils; using System.Collections.Concurrent; using System.IO; namespace Files.App.Data.AppModels { /// <summary> /// Represents a dictionary-based database model. /// </summary> public abstract class BaseDatabaseModel<TDictionaryValue> : IDatabaseModel<string> { protected readonly IAsyncSerializer<Stream> serializer; protected readonly SemaphoreSlim storageSemaphore; protected readonly ConcurrentDictionary<string, TDictionaryValue> settingsCache; protected BaseDatabaseModel(IAsyncSerializer<Stream> serializer) { this.serializer = serializer; storageSemaphore = new(1, 1); settingsCache = new(); } /// <inheritdoc/> public abstract TValue? GetValue<TValue>(string key, Func<TValue>? defaultValue = null); /// <inheritdoc/> public abstract bool SetValue<TValue>(string key, TValue? value); /// <inheritdoc/> public abstract Task LoadAsync(CancellationToken cancellationToken = default); /// <inheritdoc/> public abstract Task SaveAsync(CancellationToken cancellationToken = default); /// <inheritdoc/> public virtual void Dispose() { storageSemaphore.Dispose(); settingsCache.Clear(); } } }