예제 #1
0
        public virtual void AgentConnect(Dom.Agent agent)
        {
            if (!_agents.Keys.Contains(agent.name))
            {
                AddAgent(agent);
            }

            AgentConnect(agent.name);
        }
예제 #2
0
        private void AddAgent(Dom.Agent agentDef)
        {
            Uri uri  = new Uri(agentDef.location);
            var type = ClassLoader.FindTypeByAttribute <AgentAttribute>((x, y) => y.protocol == uri.Scheme);

            if (type == null)
            {
                throw new PeachException("Error, unable to locate agent that supports the '" + uri.Scheme + "' protocol.");
            }

            var agent = Activator.CreateInstance(type, agentDef.name, agentDef.location, agentDef.password) as AgentClient;

            _agents[agentDef.name]           = agent;
            _agentDefinitions[agentDef.name] = agentDef;
        }
예제 #3
0
        private void AgentConnect(string name)
        {
            logger.Trace("AgentConnect: {0}", name);

            Dom.Agent   def   = _agentDefinitions[name];
            AgentClient agent = _agents[name];

            try
            {
                agent.AgentConnect(def.name, def.location, def.password);
            }
            catch
            {
                _agents.Remove(name);
                _agentDefinitions.Remove(name);
                throw;
            }

            foreach (Dom.Monitor mon in def.monitors)
            {
                string monitorName = mon.name != null ? mon.name : "Monitor_" + UniqueNames++;
                agent.StartMonitor(monitorName, mon.cls, mon.parameters);
            }
        }