namespace qdr.fnd.core.pqueue.Enums
{
    public enum PsStatusEnum : int
    {
        /// <summary>
        /// Initial status of the queue item.
        /// This state can be moved to states: <see cref="Pending"/>
        /// </summary>
        New = 0,
        /// <summary>
        /// Enqueued item waiting for processing.
        /// This state can be moved to states: <see cref="Started"/>, <see cref="Expired"/>
        /// </summary>
        Pending = 1,
        /// <summary>
        /// Item started to processing.
        /// This state can be moved to states: <see cref="Pending"/>, <see cref="Paused"/>, <see cref="Stopped"/>
        /// <see cref="DoneOk"/>, <see cref="DoneFailed"/>, <see cref="Expired"/>
        /// </summary>
        Started = 2,
        /// <summary>
        /// Item is paused in processing and can be resumed with postponed time.
        /// This state can be moved to states: <see cref="Started"/>, <see cref="Stopped"/>, <see cref="Expired"/>
        /// </summary>
        Paused = 3,
        /// <summary>
        /// Item is stopped in processing and cannot be resumed.
        /// This state can be moved to states: <see cref="DoneFailed"/>, <see cref="Expired"/>
        /// </summary>
        Stopped = 4,
        /// <summary>
        /// Item is successfully processed. Final logical state.
        /// This state can be moved to states: <see cref="Deleted"/>
        /// </summary>
        DoneOk = 5,
        /// <summary>
        /// Item is failed in processing. Final logical state.
        /// This state can be moved to states: <see cref="Deleted"/>
        /// </summary>
        DoneFailed = 6,
        /// <summary>
        /// Item is expired and ready to delete.
        /// This state can be moved to states: <see cref="Deleted"/>
        /// </summary>
        Expired = 7,
        /// <summary>
        /// Item is ready to physical delete.
        /// This state technical final state.
        /// </summary>
        Deleted = 8
    }
}
