home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / io / ExpiringCache.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  1.8 KB  |  86 lines

  1. package java.io;
  2.  
  3. import java.util.Map;
  4. import java.util.Set;
  5.  
  6. class ExpiringCache {
  7.    private long millisUntilExpiration;
  8.    private Map map;
  9.    private int queryCount;
  10.    private int queryOverflow;
  11.    private int MAX_ENTRIES;
  12.  
  13.    ExpiringCache() {
  14.       this(30000L);
  15.    }
  16.  
  17.    ExpiringCache(long var1) {
  18.       this.queryOverflow = 300;
  19.       this.MAX_ENTRIES = 200;
  20.       this.millisUntilExpiration = var1;
  21.       this.map = new 1(this);
  22.    }
  23.  
  24.    synchronized String get(String var1) {
  25.       if (++this.queryCount >= this.queryOverflow) {
  26.          this.cleanup();
  27.       }
  28.  
  29.       Entry var2 = this.entryFor(var1);
  30.       return var2 != null ? var2.val() : null;
  31.    }
  32.  
  33.    synchronized void put(String var1, String var2) {
  34.       if (++this.queryCount >= this.queryOverflow) {
  35.          this.cleanup();
  36.       }
  37.  
  38.       Entry var3 = this.entryFor(var1);
  39.       if (var3 != null) {
  40.          var3.setTimestamp(System.currentTimeMillis());
  41.          var3.setVal(var2);
  42.       } else {
  43.          this.map.put(var1, new Entry(System.currentTimeMillis(), var2));
  44.       }
  45.  
  46.    }
  47.  
  48.    synchronized void clear() {
  49.       this.map.clear();
  50.    }
  51.  
  52.    private Entry entryFor(String var1) {
  53.       Entry var2 = (Entry)this.map.get(var1);
  54.       if (var2 != null) {
  55.          long var3 = System.currentTimeMillis() - var2.timestamp();
  56.          if (var3 < 0L || var3 >= this.millisUntilExpiration) {
  57.             this.map.remove(var1);
  58.             var2 = null;
  59.          }
  60.       }
  61.  
  62.       return var2;
  63.    }
  64.  
  65.    private void cleanup() {
  66.       Set var1 = this.map.keySet();
  67.       String[] var2 = new String[var1.size()];
  68.       int var3 = 0;
  69.  
  70.       for(String var5 : var1) {
  71.          var2[var3++] = var5;
  72.       }
  73.  
  74.       for(int var6 = 0; var6 < var2.length; ++var6) {
  75.          this.entryFor(var2[var6]);
  76.       }
  77.  
  78.       this.queryCount = 0;
  79.    }
  80.  
  81.    // $FF: synthetic method
  82.    static int access$000(ExpiringCache var0) {
  83.       return var0.MAX_ENTRIES;
  84.    }
  85. }
  86.