|
|
@ -174,12 +174,14 @@ public abstract class serverAbstractSwitch implements serverSwitch {
|
|
|
|
if (accessPath == null) accessPath="NULL";
|
|
|
|
if (accessPath == null) accessPath="NULL";
|
|
|
|
TreeMap access = (TreeMap) accessTracker.get(host);
|
|
|
|
TreeMap access = (TreeMap) accessTracker.get(host);
|
|
|
|
if (access == null) access = new TreeMap();
|
|
|
|
if (access == null) access = new TreeMap();
|
|
|
|
access.put(new Long(System.currentTimeMillis()), accessPath);
|
|
|
|
synchronized (access) {
|
|
|
|
|
|
|
|
access.put(new Long(System.currentTimeMillis()), accessPath);
|
|
|
|
|
|
|
|
|
|
|
|
// write back to tracker
|
|
|
|
// write back to tracker
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
accessTracker.put(host, clearTooOldAccess(access));
|
|
|
|
accessTracker.put(host, clearTooOldAccess(access));
|
|
|
|
} catch (ConcurrentModificationException e) {};
|
|
|
|
} catch (ConcurrentModificationException e) {};
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public TreeMap accessTrack(String host) {
|
|
|
|
public TreeMap accessTrack(String host) {
|
|
|
@ -187,19 +189,20 @@ public abstract class serverAbstractSwitch implements serverSwitch {
|
|
|
|
|
|
|
|
|
|
|
|
TreeMap access = (TreeMap) accessTracker.get(host);
|
|
|
|
TreeMap access = (TreeMap) accessTracker.get(host);
|
|
|
|
if (access == null) return null;
|
|
|
|
if (access == null) return null;
|
|
|
|
|
|
|
|
synchronized (access) {
|
|
|
|
// clear too old entries
|
|
|
|
// clear too old entries
|
|
|
|
int oldsize = access.size();
|
|
|
|
int oldsize = access.size();
|
|
|
|
if ((access = clearTooOldAccess(access)).size() != oldsize) {
|
|
|
|
if ((access = clearTooOldAccess(access)).size() != oldsize) {
|
|
|
|
// write back to tracker
|
|
|
|
// write back to tracker
|
|
|
|
if (access.size() == 0) {
|
|
|
|
if (access.size() == 0) {
|
|
|
|
accessTracker.remove(host);
|
|
|
|
accessTracker.remove(host);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
accessTracker.put(host, access);
|
|
|
|
accessTracker.put(host, access);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return access;
|
|
|
|
return access;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private TreeMap clearTooOldAccess(TreeMap access) {
|
|
|
|
private TreeMap clearTooOldAccess(TreeMap access) {
|
|
|
|