コード例 #1
0
        public void Add(AgentLog log)
        {
            lock (syncRoot)
            {
                if (log.Type == "Executing")
                {
                    if (!activeAgents.ContainsKey(log.Agent))
                    {
                        activeAgents.Add(log.Agent, new AgentCollector(log.Agent));
                    }

                    activeAgents[log.Agent].Collect(log.Message);
                    if (activeStep == null && steps.LastOrDefault()?.Contains(activeAgents[log.Agent]) != true)
                    {
                        activeStep = new ExecutionOrderStep(activeAgents.Values);
                    }

                    activeStep?.Collect(activeAgents[log.Agent]);
                }
                else if (activeAgents.ContainsKey(log.Agent))
                {
                    AgentCollector remainingCollector = activeAgents[log.Agent].Finish(log.Message);
                    if (remainingCollector == null)
                    {
                        activeAgents.Remove(log.Agent);
                    }

                    if (activeStep != null)
                    {
                        steps.Add(activeStep);
                        activeStep = null;
                    }
                }
            }
        }
コード例 #2
0
 public bool Contains(AgentCollector agentCollector)
 {
     return(activeAgents.Contains(agentCollector));
 }
コード例 #3
0
 public void Collect(AgentCollector agentCollector)
 {
     activeAgents.Add(agentCollector);
 }