package com.easyagents.agent.runtime.tool.asynctool;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 异步工具取消结果。
 */
public class AsyncToolCancelResult {

    private String taskId;
    private AsyncToolTaskStatus status;
    private String message;
    private String errorMessage;
    private Map<String, Object> payload = new LinkedHashMap<>();
    private Map<String, Object> metadata = new LinkedHashMap<>();

    /**
     * 创建空取消结果。
     */
    public AsyncToolCancelResult() {
    }

    /**
     * 获取任务 ID。
     *
     * @return 任务 ID
     */
    public String getTaskId() {
        return taskId;
    }

    /**
     * 设置任务 ID。
     *
     * @param taskId 任务 ID
     */
    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }

    /**
     * 获取任务状态。
     *
     * @return 任务状态
     */
    public AsyncToolTaskStatus getStatus() {
        return status;
    }

    /**
     * 设置任务状态。
     *
     * @param status 任务状态
     */
    public void setStatus(AsyncToolTaskStatus status) {
        this.status = status;
    }

    /**
     * 获取取消消息。
     *
     * @return 取消消息
     */
    public String getMessage() {
        return message;
    }

    /**
     * 设置取消消息。
     *
     * @param message 取消消息
     */
    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * 获取错误消息。
     *
     * @return 错误消息
     */
    public String getErrorMessage() {
        return errorMessage;
    }

    /**
     * 设置错误消息。
     *
     * @param errorMessage 错误消息
     */
    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    /**
     * 获取业务扩展载荷。
     *
     * @return 业务扩展载荷
     */
    public Map<String, Object> getPayload() {
        return payload;
    }

    /**
     * 设置业务扩展载荷。
     *
     * @param payload 业务扩展载荷
     */
    public void setPayload(Map<String, Object> payload) {
        this.payload = payload == null ? new LinkedHashMap<>() : payload;
    }

    /**
     * 获取元数据。
     *
     * @return 元数据
     */
    public Map<String, Object> getMetadata() {
        return metadata;
    }

    /**
     * 设置元数据。
     *
     * @param metadata 元数据
     */
    public void setMetadata(Map<String, Object> metadata) {
        this.metadata = metadata == null ? new LinkedHashMap<>() : metadata;
    }
}
