public void Receive(CmdMessage cmdMsg) { var cmd = cmdMsg.command; if (cmd == "start") { this.Log().Info("任务开始"); this.Start(); } else if (cmd == "stop") { this.Stop(); } else if (cmd == "init") { this.Stop(); this.Clear(); UnLoadExcuter(); var assembly = cmdMsg.Get("task_assembly"); Loader.Instance.CreateTaskAssembly(assembly, cmdMsg.attachment); } }
private static IList <NetMQMessage> buildMessage(string cmdText) { IList <NetMQMessage> msgList = new List <NetMQMessage>(); //target command -p aaa -f dddd -d var cmds = cmdText.Split('-'); var mainCmd = cmds[0].Trim().Split(' '); var target = mainCmd[0]; var command = mainCmd[1]; CmdMessage cmd = new CmdMessage() { target = target, command = command }; for (int i = 1; i < cmds.Length; i++) { var p = cmds[i].Split(' '); cmd.Put(p[0], p[1]); } switch (cmd.command) { case "upload": if (string.IsNullOrEmpty(cmd.Get("assembly"))) { cmd.Put("assembly", "StockMan.Message.TaskInstance"); } if (string.IsNullOrEmpty(cmd.Get("type"))) { cmd.Put("type", "StockMan.Message.TaskInstance.FirstTask"); } //var assembly = cmd.Get("assembly"); //var type = cmd.Get("type"); //var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "tasks", assembly, type); //string[] files = Directory.GetFiles(path); //foreach (var file in files) //{ // if (File.Exists(file)) // { // byte[] fileData = File.ReadAllBytes(file); // cmd.PutAttachment(Path.GetFileName(file), fileData); // } //} return(msgList); case "init": TaskService service = new TaskService(); var taskList = service.GetTaskList(); var assmeblys = taskList.Select(p => p.assembly).Distinct(); foreach (var assembly in assmeblys) { CmdMessage cmd0 = new CmdMessage() { target = target, command = command }; for (int i = 1; i < cmds.Length; i++) { var p = cmds[i].Split(' '); cmd0.Put(p[0], p[1]); } //cmd0.Put("task_code", task.code); //cmd0.Put("task_type", task.type); cmd0.Put("task_assembly", assembly); var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "tasks", assembly); if (Directory.Exists(path)) { var dics = GetFiles(path); foreach (var file in dics.Keys) { cmd0.PutAttachment(file.Replace(path + "\\", ""), dics[file]); } NetMQMessage msg0 = GetMessage(cmd0); msgList.Add(msg0); } } return(msgList); case "clear": MessageService msgService = new MessageService(); msgService.RemoveAll(); return(null); break; default: NetMQMessage msg = GetMessage(cmd); msgList.Add(msg); return(msgList); } }
protected override bool _Execute(CommandRequest e) { string[] args = e.ArgumentList; ServerResponse response = ResponseHandler.NewOutputResponse; try { // 0 if (args.Length <= 0) { List <Issue> l = GetIssueList(); foreach (Issue o in l) { if (o.State == Issue.IssueState.NEW || o.State == Issue.IssueState.WORK) { response.AddData(CreateHtmlEntry(o)); } } } // 3 //PRIORITY else if (check(args, 3, "prio", "priority", "-p")) { Issue o = GetObject(Int32.Parse(args[1])); if (o != null) { o.Priority = Issue.GetPriority(args[2].ToLower().Trim()); response.AddData(HTML.CreateCssClassOutputLine("blue-light", "Changed: ")); response.AddData(CreateHtmlEntry(UpdateObject(o))); } else { response.AddData(CmdMessage.Get(CmdMessage.Type.Error, HTML.Encode("Error: ID Not found!"))); } } // 2 //ADD else if (check(args, 2, "add", "report")) { List <Issue> l = GetIssueList(); string desc = Regex.Replace(e.ArgumentString.Substring(args[0].Length), "\\s+", " ").Trim(); string highlight = ""; Issue.IssueType type = Issue.IssueType.TODO; //prio Issue.IssuePriority prio = Issue.GetPriority(desc.ToLower().Trim().Substring(0, 1)); if (prio != Issue.IssuePriority.NORMAL) { desc = desc.Trim().Substring(1).Trim(); } //heightlight (e.g. "[JS] ...") if (desc.ToLower().StartsWith("[") && desc.ToLower().Contains("]")) { highlight = desc.Substring(0, desc.IndexOf("]") + 1).Trim(); desc = desc.Substring(highlight.Length).Trim(); } //bug string b = e.Command.ToLower(); if (b.Contains("bug")) { type = Issue.IssueType.BUG; } if (desc.ToLower().StartsWith("bug:")) { type = Issue.IssueType.BUG; desc = desc.Substring(4).Trim(); } //add if (desc.ToLower().StartsWith("add:")) { type = Issue.IssueType.ADD; desc = desc.Substring(4).Trim(); } Issue o = new Issue(type, String.Concat(highlight, " ", desc)); o.ID = l[l.Count - 1].ID + 1; o.State = Issue.IssueState.NEW; o.Priority = prio; l.Add(o); SaveIssueList(l); response.AddData(HTML.CreateCssClassOutputLine("green", "Added: ")); response.AddData(CreateHtmlEntry(o)); } //REMOVE else if (check(args, 2, "remove", "-rm")) { List <Issue> l = GetIssueList(); int n = Int32.Parse(args[1]); bool match = false; foreach (Issue o in l) { if (o.ID == n) { match = true; l.Remove(o); response.AddData(HTML.CreateCssClassOutputLine("red", "Removed: ")); response.AddData(CreateHtmlEntry(o)); break; } } if (match) { SaveIssueList(l); } else { response.AddData(CmdMessage.Get(CmdMessage.Type.Error, HTML.Encode("Error: ID Not found!"))); } } //FIXED else if (check(args, 2, "fixed", "-f", "done")) { Issue o = GetObject(Int32.Parse(args[1])); if (o != null) { o.State = Issue.IssueState.DONE; if (o.Type == Issue.IssueType.BUG) { o.State = Issue.IssueState.FIXED; } response.AddData(HTML.CreateCssClassOutputLine("blue-light", "Changed: ")); response.AddData(CreateHtmlEntry(UpdateObject(o))); } else { response.AddData(CmdMessage.Get(CmdMessage.Type.Error, HTML.Encode("Error: ID Not found!"))); } } //INVALID else if (check(args, 2, "invalid", "-i")) { Issue o = GetObject(Int32.Parse(args[1])); if (o != null) { o.State = Issue.IssueState.INVALID; response.AddData(HTML.CreateCssClassOutputLine("blue-light", "Changed: ")); response.AddData(CreateHtmlEntry(UpdateObject(o))); } else { response.AddData(CmdMessage.Get(CmdMessage.Type.Error, HTML.Encode("Error: ID Not found!"))); } } //NEW else if (check(args, 2, "new", "-n")) { Issue o = GetObject(Int32.Parse(args[1])); if (o != null) { o.State = Issue.IssueState.NEW; response.AddData(HTML.CreateCssClassOutputLine("blue-light", "Changed: ")); response.AddData(CreateHtmlEntry(UpdateObject(o))); } else { response.AddData(CmdMessage.Get(CmdMessage.Type.Error, HTML.Encode("Error: ID Not found!"))); } } //IN PROGRESS else if (check(args, 2, "work", "assign", "-w", "-as")) { Issue o = GetObject(Int32.Parse(args[1])); if (o != null) { o.State = Issue.IssueState.WORK; response.AddData(HTML.CreateCssClassOutputLine("blue-light", "Changed: ")); response.AddData(CreateHtmlEntry(UpdateObject(o))); } else { response.AddData(CmdMessage.Get(CmdMessage.Type.Error, HTML.Encode("Error: ID Not found!"))); } } // 1 //LIST else if (check(args, 1, "list")) { List <Issue> l = GetIssueList(); List <Issue.IssueState> filters = new List <Issue.IssueState>(); if (args.Length >= 2) { for (int i = 1; i < args.Length; i++) { try { filters.Add((Issue.IssueState)Enum.Parse(typeof(Issue.IssueState), args[i], true)); } catch { filters.Clear(); } } } foreach (Issue o in l) { if (filters.Count <= 0) { response.AddData(CreateHtmlEntry(o)); } foreach (Issue.IssueState filter in filters) { if (o.State == filter) { response.AddData(CreateHtmlEntry(o)); } } } } else { PrintUsage(response); } } catch (Exception ex2) { PrintUsage(response); response.AddData("ERROR: ", ex2.ToString()); } e.Source.Response.Send(response); return(true); }