package io.wdd.rpc.scheduler.service;


import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;


//@Component
@Slf4j
public class BuildStatusScheduleTask {

    public static final String JOB_GROUP_NAME = "OctopusAgent";
    @Resource
    QuartzSchedulerService octopusQuartzService;
    @Value(value = "${octopus.status.healthy.cron}")
    String healthyCronTimeExpress;
    @Value(value = "${octopus.status.healthy.start-delay}")
    int healthyCheckStartDelaySeconds;
    @Value(value = "${octopus.status.metric.cron}")
    String metricReportCronExpress;
    @Value(value = "${octopus.status.metric.start-delay}")
    int metricReportStartDelaySeconds;

    @PostConstruct
    private void buildAllPreScheduledTask() {

        // Agent存活健康状态检查
//        buildMonitorAllAgentAliveStatusScheduleTask();

        // Agent运行信息检查 Metric
//        buildAgentMetricScheduleTask();

    }

    /**
     * Agent运行信息检查 Metric
     * 【调用】应该由 健康状态检查结果 调用 ==> 所有存活节点需要进行Metric信息汇报
     * 【间隔】存活间隔内，间隔一定的时间汇报Metric
     * <p>
     * 2023年7月10日 更改为按照cron表达式进行执行
     */
//    public void buildAgentMetricScheduleTask() {
//
//        // 2023年7月10日 更改为按照cron表达式进行执行
//        octopusQuartzService.addMission(
//                AgentMetricStatusJob.class,
//                "agentRunMetricStatusJob",
//                JOB_GROUP_NAME,
//                metricReportStartDelaySeconds,
//                metricReportCronExpress,
//                null
//        );
//
//    }

    /**
     * Agent存活健康状态检查
     * <p>
     * 定时任务，从Nacos配置中获取相应的信息
     * 延迟触发时间 healthyCheckStartDelaySeconds
     * 定时任务间隔 healthyCronTimeExpress
     */
//    private void buildMonitorAllAgentAliveStatusScheduleTask() {
//
//        // build the Job
//        octopusQuartzService.addMission(
//                AgentAliveStatusMonitorJob.class,
//                "monitorAllAgentAliveStatusJob",
//                JOB_GROUP_NAME,
//                healthyCheckStartDelaySeconds,
//                healthyCronTimeExpress,
//                null
//        );
//
//    }


}
