1 19 20 package org.lucane.server; 21 22 import java.util.*; 23 24 import org.lucane.common.*; 25 import org.lucane.common.net.ObjectConnection; 26 27 public class ConnectInfoManager 28 { 29 private static ConnectInfoManager instance = null; 31 public static ConnectInfoManager getInstance() 32 { 33 if(instance == null) 34 instance = new ConnectInfoManager(); 35 36 return instance; 37 } 38 39 private ArrayList connections; 41 private ConnectInfo serverInfo; 42 43 46 private ConnectInfoManager() 47 { 48 this.connections = new ArrayList(); 49 } 50 51 56 public void setServerInfo(ConnectInfo info) 57 { 58 this.serverInfo = info; 59 } 60 61 66 public ConnectInfo getServerInfo() 67 { 68 return this.serverInfo; 69 } 70 71 76 public void addConnectInfo(ConnectInfo info) 77 { 78 if(info.isWebClient()) 79 return; 80 81 Logging.getLogger().finer("Added ConnectInfo into ConnectInfoManager : " + info); 82 this.connections.add(info); 83 } 84 85 90 public void removeConnectInfo(ConnectInfo info) 91 { 92 removeConnectInfo(info.getName()); 93 } 94 95 100 public void removeConnectInfo(String user) 101 { 102 ConnectInfo info = getConnectInfo(user); 103 if(info == null) 104 return; 105 106 Logging.getLogger().finer("Removed ConnectInfo from ConnectInfoManager : " + info); 107 this.connections.remove(info); 108 109 if(info.isClient()) 111 Server.getInstance().sendUserListToEveryone(); 112 } 113 114 118 public Iterator getAllConnectInfos() 119 { 120 return this.connections.iterator(); 121 } 122 123 128 public Iterator getClientConnectInfos() 129 { 130 ArrayList clients = new ArrayList(); 131 132 Iterator i = getAllConnectInfos(); 133 while(i.hasNext()) 134 { 135 ConnectInfo ci = (ConnectInfo)i.next(); 136 if(ci.isClient()) 137 clients.add(ci); 138 } 139 140 return clients.iterator(); 141 } 142 143 144 150 public boolean isConnected(String userName) 151 { 152 ConnectInfo ci = getConnectInfo(userName); 153 return ci != null; 154 } 155 156 157 163 public boolean isConnected(ConnectInfo ci) 164 { 165 return isConnected(ci.getName()); 166 } 167 168 169 175 public ConnectInfo getConnectInfo(String userName) 176 { 177 Iterator infos = this.connections.iterator(); 178 while(infos.hasNext()) 179 { 180 ConnectInfo info = (ConnectInfo)infos.next(); 181 if (info.getName().equals(userName)) 182 return info; 183 } 184 185 Logging.getLogger().finer("Unknown ConnectInfo from ConnectInfoManager : " + userName); 186 187 return null; 188 } 189 190 196 public ConnectInfo getCompleteConnectInfo(ConnectInfo info) 197 { 198 ConnectInfo complete = getConnectInfo(info.getName()); 199 return complete == null ? info : complete; 200 } 201 202 205 public void kickAllUsers() 206 { 207 Iterator clients = getClientConnectInfos(); 208 while(clients.hasNext()) 209 { 210 ConnectInfo client = (ConnectInfo)clients.next(); 211 try { 212 Map action = new HashMap(); 213 action.put("command", "DISCONNECT"); 214 ObjectConnection oc = Server.getInstance().sendMessageTo(client, "Client", action); 215 oc.close(); 216 } catch (Exception e) { 217 Logging.getLogger().warning("Unable to kick : " + client.getName()); 218 } 219 } 220 } 221 } | Popular Tags |