package cn.reghao.bnt.web.devops.machine.service;

import cn.reghao.bnt.common.msg.constant.NodeStatus;
import cn.reghao.bnt.common.msg.event.EvtAgentHeartbeat;
import cn.reghao.bnt.common.msg.event.EvtAgentStart;
import cn.reghao.jutil.jdk.web.result.Result;

/**
 * @author reghao
 * @date 2019-11-15 08:48:04
 */
public interface MachineService {
    void addOrUpdateMachine(EvtAgentStart evtAgentStart);
    void updateMachine(EvtAgentHeartbeat evtAgentHeartbeat);
    void setMachineEnv(String machineId, String env);
    /**
     * 将 Offline 状态的节点设置为 Deprecated
     *
     * @param
     * @return
     * @date 2025-09-19 15:17:30
     */
    void setMachineDeprecate(String machineId);
    /**
     * 根据 websocket 的连接状态设置 devops-agent 的状态
     *
     * @param
     * @return
     * @date 2025-09-19 14:53:56
     */
    void setAgentStatus(String machineId, NodeStatus nodeStatus);
    /**
     * mgr 进程结束时将所有 Online 状态的 agent 节点设置为 Offline
     *
     * @param
     * @return
     * @date 2025-06-05 11:34:21
     */
    void setMachineOffline();
    Result deleteMachine(String machineId);
}
