package com.dora.service;

import com.dora.entity.AiTask;

/**
 * RunningHub任务队列服务接口
 * 管理等待提交到RunningHub的任务队列，实现并发控制
 *
 * @author 1818AI
 * @since 2025-10-20
 */
public interface RunningHubQueueService {

    /**
     * 将任务加入等待队列
     * 如果当前轮询任务数未达到上限，立即提交；否则放入队列等待
     *
     * @param task 待提交的AI任务
     * @return true=立即提交成功, false=已加入等待队列
     */
    boolean enqueueOrSubmit(AiTask task);

    /**
     * 获取当前正在轮询的任务数量
     *
     * @return 正在轮询的任务数
     */
    int getPollingTaskCount();

    /**
     * 获取等待队列中的任务数量
     *
     * @return 等待中的任务数
     */
    int getWaitingQueueSize();

    /**
     * 从等待队列中取出任务并提交到RunningHub
     * 当有轮询任务完成时调用此方法
     *
     * @return 提交的任务数量
     */
    int processWaitingQueue();

    /**
     * 任务完成后的回调（从轮询列表中移除）
     *
     * @param taskNo 任务编号
     */
    void onTaskCompleted(String taskNo);
}

