namespace ZB.MOM.WW.MxGateway.Server.Configuration;

public sealed class SessionOptions
{
    /// <summary>
    /// Gets the default command timeout in seconds.
    /// </summary>
    public int DefaultCommandTimeoutSeconds { get; init; } = 30;

    /// <summary>
    /// Gets the maximum number of concurrent sessions.
    /// </summary>
    public int MaxSessions { get; init; } = 64;

    /// <summary>
    /// Gets the maximum number of pending commands per session.
    /// </summary>
    public int MaxPendingCommandsPerSession { get; init; } = 128;

    /// <summary>Gets the default session lease duration in seconds.</summary>
    public int DefaultLeaseSeconds { get; init; } = 1800;

    /// <summary>Gets the interval for sweeping expired session leases in seconds.</summary>
    public int LeaseSweepIntervalSeconds { get; init; } = 30;

    /// <summary>
    /// Gets a value indicating whether multiple event subscribers are allowed per session.
    /// </summary>
    public bool AllowMultipleEventSubscribers { get; init; }
}
