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);
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }