/* * Copyright (c) 2022 Vaughn Nugent * * Library: VNLib * Package: VNLib.Plugins.Essentials.Sessions.Memory * File: MemorySessionConfig.cs * * MemorySessionConfig.cs is part of VNLib.Plugins.Essentials.Sessions.Memory which is part of the larger * VNLib collection of libraries and utilities. * * VNLib.Plugins.Essentials.Sessions.Memory 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.Plugins.Essentials.Sessions.Memory 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; using VNLib.Utils.Logging; namespace VNLib.Plugins.Sessions.Memory { /// /// Represents configration variables used to create and operate http sessions. /// public readonly struct MemorySessionConfig { /// /// The name of the cookie to use for matching sessions /// public string SessionCookieID { get; init; } /// /// The size (in bytes) of the genreated SessionIds /// public uint SessionIdSizeBytes { get; init; } /// /// The amount of time a session is valid (within the backing store) /// public TimeSpan SessionTimeout { get; init; } /// /// The log for which all errors within the instance will be written to. /// public ILogProvider SessionLog { get; init; } /// /// The maximum number of sessions allowed to be cached in memory. If this value is exceed requests to this /// server will be denied with a 503 error code /// public int MaxAllowedSessions { get; init; } } }