using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Sog; using Google.Protobuf.WellKnownTypes; using Google.Protobuf; using Sog.ClusterCfg; namespace SMCenter { public enum DisableMode{ open = 0, close = 1 }; public class SMProcApp { public string Name { get; private set; } public uint AppId { get; private set; } public int AppType { get; private set; } public int Sequence { get; private set; } public int StopTimeout { get; private set; } public string ServerIDStr { get; private set; } public string Cmd { get; private set; } public string WorkPath { get; private set; } public string CfgPath { get; private set; } public string HostName { get; private set; } public string ExeFileName { get; private set; } public string ScriptName { get; private set; } public DisableMode Disable { get; private set; } public HostConfig HostConfig { get; private set; } public static SMProcApp CreateApp(BusinessConfig business, HostConfig host, GroupProcConfig proc, AppConfig app,bool isworldlayer) { SMProcApp smprocApp = new SMProcApp(); Dictionary paramsMap = new Dictionary(); smprocApp.Name = app.name; smprocApp.AppType = app.apptype; smprocApp.Sequence = app.sequence; smprocApp.StopTimeout = app.stoptimeout; smprocApp.Disable = DisableMode.open; smprocApp.CfgPath = host.cfgpath; smprocApp.HostName = host.hostname; smprocApp.HostConfig = host; smprocApp.WorkPath = business.workpath; smprocApp.ExeFileName = "SogLoader"; smprocApp.ScriptName = app.script; ClusterApp.ParseParams(proc.param, paramsMap); ClusterApp.ParseParams(host.param, paramsMap); if (paramsMap.ContainsKey("workPath") ){ smprocApp.WorkPath = paramsMap["workPath"]; } if (paramsMap.ContainsKey("exeFileName")) { smprocApp.ExeFileName = paramsMap["exeFileName"]; } if (paramsMap.ContainsKey("Disable") && paramsMap["Disable"] == "close") { smprocApp.Disable = DisableMode.close; } int worldid = host.worldid; if(isworldlayer == false) { worldid = 0; } smprocApp.AppId = ServerIDUtils.MakeServerID(worldid, app.apptype, proc.instid); smprocApp.ServerIDStr = ServerIDUtils.IDToString(smprocApp.AppId); smprocApp.Cmd = string.Format("./SogLoader --id={0} --cluster={1}/cluster.json", smprocApp.ServerIDStr, host.cfgpath); return smprocApp; } } }