1 29 30 package echo2example.chatserver; 31 32 import java.util.HashMap ; 33 import java.util.Iterator ; 34 import java.util.Map ; 35 36 39 public class UserManager { 40 41 44 private static final int TIMEOUT_MS = 15 * 60 * 1000; 45 46 49 private Map userMap = new HashMap (); 50 51 58 public String add(String userName) { 59 if (userName.length() != userName.trim().length()) { 61 return null; 62 } 63 64 if (userName.length() < 2) { 66 return null; 67 } 68 69 User user = null; 70 synchronized (userMap) { 71 if (userMap.containsKey(userName)) { 73 return null; 74 } 75 76 user = new User(userName); 77 userMap.put(userName, user); 78 } 79 return user.getAuthToken(); 80 } 81 82 89 public boolean authenticate(String userName, String authToken) { 90 User user = (User) userMap.get(userName); 91 if (user == null) { 92 return false; 93 } 94 return user.authenticate(authToken); 95 } 96 97 100 public void purge() { 101 long time = System.currentTimeMillis(); 102 synchronized (userMap) { 103 Iterator userNameIt = userMap.keySet().iterator(); 104 while (userNameIt.hasNext()) { 105 String userName = (String ) userNameIt.next(); 106 User user = (User) userMap.get(userName); 107 if (time - user.getLastActionTime() > TIMEOUT_MS) { 108 userNameIt.remove(); 109 } 110 } 111 } 112 } 113 114 119 public void remove(String userName) { 120 synchronized (userMap) { 121 userMap.remove(userName); 122 } 123 } 124 125 128 public String toString() { 129 StringBuffer out = new StringBuffer (); 130 synchronized (userMap) { 131 Iterator it = userMap.keySet().iterator(); 132 while (it.hasNext()) { 133 out.append(it.next()); 134 if (it.hasNext()) { 135 out.append(", "); 136 } 137 } 138 } 139 return out.toString(); 140 } 141 } 142
| Popular Tags
|