Exemplo n.º 1
0
 /// <summary>
 /// deregisters agent
 /// </summary>
 public void DeregisterAgent(Agent a)
 {
     acInternalRequest = ACRequests.SynchronizeAgentList;
     while (acInternalRequest == ACRequests.SynchronizeAgentList) Thread.Sleep(20);
     agentRegister.Remove(a);
     acInternalRequest = ACRequests.SynchronizeAgentList;
     while (acInternalRequest == ACRequests.SynchronizeAgentList) Thread.Sleep(20);
 }
Exemplo n.º 2
0
 /// <summary>
 /// creates and starts agent controller
 /// </summary>
 public AgentController()
 {
     if (acThread != null)
         throw new Exception("It's not allowed to create more than one agent controller");
     agentRegister = new List<Agent>();
     acThread = new Thread(acMain);
     acInternalRequest = ACRequests.Dummy;
     acThread.Start();
 }
Exemplo n.º 3
0
 /// <summary>
 /// deregisters all agents which names correspond to specified pattern
 /// </summary>
 public void DeregisterAgents(string namePattern)
 {
     acInternalRequest = ACRequests.SynchronizeAgentList;
     while (acInternalRequest == ACRequests.SynchronizeAgentList) Thread.Sleep(20);
     for (int i = 0; i < agentRegister.Count; )
         if (Regex.IsMatch(agentRegister[i].Name, namePattern))
             agentRegister.RemoveAt(i);
         else
             i++;
     acInternalRequest = ACRequests.SynchronizeAgentList;
     while (acInternalRequest == ACRequests.SynchronizeAgentList) Thread.Sleep(20);
 }
Exemplo n.º 4
0
        /// <summary>
        /// agent controller thread main function
        /// </summary>
        void acMain()
        {
            while (true)
            {
                if (acInternalRequest == ACRequests.KillAgentController) break;
                if (acInternalRequest == ACRequests.SynchronizeAgentList)
                {
                    acInternalRequest = ACRequests.Dummy;
                    while (acInternalRequest != ACRequests.SynchronizeAgentList)  Thread.Sleep(100);
                    acInternalRequest = ACRequests.Dummy;
                }

                // agent jobs
                for (int i = 0; i < agentRegister.Count; i++)
                {
                    agentRegister[i].Process();
                    if (agentRegister[i].selfDeregister)
                    {
                        agentRegister.RemoveAt(i);
                        i--;
                    }
                    if (acInternalRequest == ACRequests.KillAgentController) break;
                }

                Thread.Sleep(20);
            }
            acInternalRequest = ACRequests.Dummy;
            acThread = null;
            Thread.CurrentThread.Abort();
        }
Exemplo n.º 5
0
 /// <summary>
 /// stops agent controller thread and deregisters all agents
 /// </summary>
 public void KillAgentController()
 {
     acInternalRequest = ACRequests.KillAgentController;
     while (acInternalRequest == ACRequests.KillAgentController) Thread.Sleep(20);
     agentRegister.Clear();
 }