namespace EonaCat.LogStack.Core;

// This file is part of the EonaCat project(s) which is released under the Apache License.
// See the LICENSE file or go to https://EonaCat.com/License for full license details.

/// <summary>
/// Defines the severity level of log entries
/// </summary>
public enum LogLevel : byte
{
    None = 0,        
    Trace = 1,       
    Debug = 2,       
    Information = 3, 
    Warning = 4,     
    Error = 5,       
    Critical = 6,
}

/// <summary>
/// Result of a log write operation
/// </summary>
public enum WriteResult : byte
{
    Success = 0,
    Dropped = 1,
    Failed = 2,
    FlowDisabled = 3,
    LevelFiltered = 4,
    NoBlastZone = 5
}

/// <summary>
/// Strategy for handling backpressure in flows
/// </summary>
public enum BackpressureStrategy : byte
{
    /// <summary>Wait for capacity to become available</summary>
    Wait = 0,

    /// <summary>Drop the newest incoming message</summary>
    DropNewest = 1,

    /// <summary>Drop the oldest message in the queue</summary>
    DropOldest = 2,

    /// <summary>Block until space is available (may impact performance)</summary>
    Block = 3
}

/// <summary>
/// Options for timestamp generation
/// </summary>
public enum TimestampMode : byte
{
    Utc = 0,
    Local = 1,
    HighPrecision = 2
}