package xtools.boot.api.model.dto.log;

import lombok.Data;
import xtools.base.config.BaseParams;
import xtools.boot.api.enums.ThreadType;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * <p>Title : HolderLogTrack</p>
 * <p>Description : HolderLogTrack</p>
 * <p>DevelopTools : Idea_x64_v2026.1</p>
 * <p>DevelopSystem : macOS Sequoia 15.7.5</p>
 * <p>Company : org.xujun</p>
 *
 * @author : XuJun
 * @version : 5.0.0
 * @date : 2026/1/6 16:44
 */
@Data
public class HolderLogTrack implements BaseParams {

    /**
     * 日志追踪 ID
     */
    private final String traceId;
    /**
     * 父线日志 ID
     */
    private final String parentId;
    /**
     * 线程类型
     */
    private final ThreadType type;
    /**
     * 日志获取次数
     */
    private final AtomicInteger count;
    /**
     * 是否保存日志
     */
    private boolean save;

    /**
     * 构造方法
     *
     * @param traceId  日志追踪 ID
     * @param parentId 父日志 ID
     * @param type     线程类型
     */
    public HolderLogTrack(String traceId, String parentId, ThreadType type) {
        this.save = true;
        this.traceId = traceId;
        this.parentId = parentId;
        this.type = type;
        this.count = new AtomicInteger(CP_NUM0);
    }

    /**
     * 构造方法
     *
     * @param traceId  日志追踪 ID
     * @param parentId 父日志 ID
     * @param type     线程类型
     * @param count    日志获取次数
     */
    public HolderLogTrack(String traceId, String parentId, ThreadType type, int count) {
        this.save = true;
        this.traceId = traceId;
        this.parentId = parentId;
        this.type = type;
        this.count = new AtomicInteger(count);
    }
}
