/* * Copyright (c) 2023 Vaughn Nugent * * Library: VNLib * Package: VNLib.Data.Caching.Providers.VNCache * File: VNCacheBase.cs * * VNCacheBase.cs is part of VNLib.Data.Caching.Providers.VNCache * which is part of the larger VNLib collection of libraries and utilities. * * VNLib.Data.Caching.Providers.VNCache is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * VNLib.Data.Caching.Providers.VNCache is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see https://www.gnu.org/licenses/. */ using System.Threading; using System.Threading.Tasks; namespace VNLib.Data.Caching.Providers.VNCache { internal abstract class VNCacheBase : IGlobalCacheProvider { /// public abstract bool IsConnected { get; } /// public virtual ICacheObjectDeserializer DefaultDeserializer { get; } /// public virtual ICacheObjectSerializer DefaultSerializer { get; } protected VNCacheBase(VNCacheConfig config) { //Set default serializers DefaultDeserializer = config.CacheObjectDeserializer ?? new JsonCacheObjectSerializer(256); DefaultSerializer = config.CacheObjectSerializer ?? new JsonCacheObjectSerializer(256); } /// public abstract Task AddOrUpdateAsync(string key, string? newKey, T value, ICacheObjectSerializer serialzer, CancellationToken cancellation); /// public abstract Task AddOrUpdateAsync(string key, string? newKey, ObjectDataReader callback, T state, CancellationToken cancellation); /// public abstract Task DeleteAsync(string key, CancellationToken cancellation); /// public abstract Task GetAsync(string key, ICacheObjectDeserializer deserializer, CancellationToken cancellation); /// public abstract Task GetAsync(string key, ObjectDataSet callback, T state, CancellationToken cancellation); /// public abstract object GetUnderlyingStore(); } }