You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.9 KiB
73 lines
1.9 KiB
using System;
|
|
using Sog;
|
|
using Google.Protobuf.WellKnownTypes;
|
|
|
|
namespace SMCenter
|
|
{
|
|
// 更新agent
|
|
public class UpdateAgentCmdProc : BaseCmdProc
|
|
{
|
|
public override void ClearData()
|
|
{
|
|
m_nowCmd = null;
|
|
}
|
|
|
|
public override int DoCmd(out string msg)
|
|
{
|
|
try
|
|
{
|
|
var req = new SMAgentDoCommandReq();
|
|
req.Command = m_nowCmd.CMD;
|
|
req.SeqNum = m_nowCmd.SeqNum;
|
|
req.ExeFileName = GetExeFileName();
|
|
|
|
// 先简单处理,立刻广播,有问题再挪到UpdateCmd
|
|
SMCenterNet.Instance.BroadcastToAllAgent(SMMsgID.AgentDoCommandReq, req);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
TraceLog.Exception(e);
|
|
msg = "update agent throw a exception ...";
|
|
return -1;
|
|
}
|
|
|
|
msg = "update agent begin ...";
|
|
return 0;
|
|
}
|
|
|
|
|
|
public override int UpdateCmd(long tMs)
|
|
{
|
|
// 消息发送后强制等待5s
|
|
if (tMs / 1000 - m_nowCmd.CreateTime >= 5)
|
|
{
|
|
var res = new SMConsoleCommandRes();
|
|
res.Command = m_nowCmd.CMD;
|
|
res.Message = "\tuse [checkagent] to see if update succ";
|
|
|
|
SMCenterNet.Instance.SendMsg(m_nowCmd.SessionId, SMMsgID.ConsoleCommandRes, res);
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
public override void OnAgentDoCommandRes(ClientInfo client, SMAgentDoCommandRes res)
|
|
{
|
|
TraceLog.Error("UpdateAgentCmdProc.OnAgentDoCommandRes cmd {0} invalid res from {1}",
|
|
m_nowCmd.CMD, client.HostName);
|
|
}
|
|
|
|
private string GetExeFileName()
|
|
{
|
|
string exename = "SMAgentUpdater";
|
|
if (OSUtils.IsWindows())
|
|
{
|
|
exename += ".exe";
|
|
}
|
|
|
|
return exename;
|
|
}
|
|
}
|
|
|
|
}
|
|
|