|
|
|
@ -174,6 +174,7 @@ public abstract class serverAbstractSwitch implements serverSwitch {
|
|
|
|
|
if (accessPath == null) accessPath="NULL";
|
|
|
|
|
TreeMap access = (TreeMap) accessTracker.get(host);
|
|
|
|
|
if (access == null) access = new TreeMap();
|
|
|
|
|
synchronized (access) {
|
|
|
|
|
access.put(new Long(System.currentTimeMillis()), accessPath);
|
|
|
|
|
|
|
|
|
|
// write back to tracker
|
|
|
|
@ -181,13 +182,14 @@ public abstract class serverAbstractSwitch implements serverSwitch {
|
|
|
|
|
accessTracker.put(host, clearTooOldAccess(access));
|
|
|
|
|
} catch (ConcurrentModificationException e) {};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public TreeMap accessTrack(String host) {
|
|
|
|
|
// returns mapping from Long(accesstime) to path
|
|
|
|
|
|
|
|
|
|
TreeMap access = (TreeMap) accessTracker.get(host);
|
|
|
|
|
if (access == null) return null;
|
|
|
|
|
|
|
|
|
|
synchronized (access) {
|
|
|
|
|
// clear too old entries
|
|
|
|
|
int oldsize = access.size();
|
|
|
|
|
if ((access = clearTooOldAccess(access)).size() != oldsize) {
|
|
|
|
@ -201,6 +203,7 @@ public abstract class serverAbstractSwitch implements serverSwitch {
|
|
|
|
|
|
|
|
|
|
return access;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private TreeMap clearTooOldAccess(TreeMap access) {
|
|
|
|
|
return new TreeMap(access.tailMap(new Long(System.currentTimeMillis() - maxTrackingTime)));
|
|
|
|
|