View Javadoc

1   /*
2    * To change this template, choose Tools | Templates
3    * and open the template in the editor.
4    */
5   package cz.cuni.amis.pogamut.base.debug;
6   
7   
8   import java.util.HashMap;
9   import java.util.Map;
10  
11  /**
12   * Here agents register/deregister servers that they are running on. This information
13   * can be used later for debugging. The debugger can pause/unpause the server to ease
14   * the debugging.
15   * 
16   * @author Ik
17   */
18  public class DebugServersProvider {
19  
20      public static final String DELIMITER = ", ";
21      protected static Map<String, Integer> servers = new HashMap<String, Integer>();
22  
23      /**
24       * 
25       * @return Comma separated list of servers' adresses
26       */
27      public static String getServersList() {
28          String ret = "";
29          for (String server : servers.keySet()) {
30              ret += server.toString() + DELIMITER;
31          }
32          return ret;
33      }
34  
35      /**
36       *
37       * @param server uri of server
38       */
39      public static void registerServer(String server) {
40          Integer count = servers.get(server);
41          if (count == null) {
42              servers.put(server, 1);
43          } else {
44              count++;
45          }
46      }
47  
48      public static void deregisterServer(String server) {
49          Integer count = servers.get(server);
50          if (count == null) {
51              throw new IllegalArgumentException("Deregistering server that wasn't previously registered.");
52          } else {
53              if(count == 0) {
54                  servers.remove(server);
55              } else {
56                  count--;
57              }
58          }
59          // TODO should resume the server in case that it was paused 
60      }
61  }