summaryrefslogtreecommitdiff
path: root/NET/worlds/network/CacheEntry.java
diff options
context:
space:
mode:
Diffstat (limited to 'NET/worlds/network/CacheEntry.java')
-rw-r--r--NET/worlds/network/CacheEntry.java1270
1 files changed, 1270 insertions, 0 deletions
diff --git a/NET/worlds/network/CacheEntry.java b/NET/worlds/network/CacheEntry.java
new file mode 100644
index 0000000..0854eaf
--- /dev/null
+++ b/NET/worlds/network/CacheEntry.java
@@ -0,0 +1,1270 @@
+/* */ package NET.worlds.network;
+/* */
+/* */ import NET.worlds.core.IniFile;
+/* */ import java.io.FileNotFoundException;
+/* */ import java.io.IOException;
+/* */ import java.io.PrintStream;
+/* */ import java.io.Serializable;
+/* */ import java.net.HttpURLConnection;
+/* */ import java.net.MalformedURLException;
+/* */ import java.net.URLConnection;
+/* */ import java.net.UnknownHostException;
+/* */ import java.util.Date;
+/* */ import java.util.Observer;
+/* */ import java.util.Vector;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class CacheEntry
+/* */ implements Runnable, Serializable
+/* */ {
+/* */ private static final long serialVersionUID = 4845526825815464122L;
+/* 57 */ static boolean httpFaulted = (IniFile.override().getIniInt("Offline", 0) == 1) ||
+/* 58 */ (IniFile.gamma().getIniInt("Offline", 0) == 1);
+/* */
+/* 60 */ static boolean stopOnFault = IniFile.gamma().getIniInt("StopOnHttpFault",
+/* 61 */ 0) == 1;
+/* */
+/* */
+/* 64 */ static final int CACHE_MAX_ENTRIES = IniFile.gamma().getIniInt(
+/* 65 */ "NetCacheEntries", 1000);
+/* */
+/* */
+/* */
+/* */
+/* */
+/* 71 */ static final int MAX_THREADS = IniFile.gamma().getIniInt("NetCacheThreads",
+/* 72 */ 2);
+/* */
+/* */
+/* */
+/* */
+/* 77 */ static final long CACHE_MOD_TIMEOUT = 3600000L * IniFile.gamma()
+/* 78 */ .getIniInt("NetCacheModifiedCheck", 8);
+/* */
+/* */
+/* */
+/* */
+/* 83 */ static final long CACHE_MOD_TIMEDELAY = 60000L * IniFile.gamma()
+/* 84 */ .getIniInt("NetCacheDelay", 5);
+/* */
+/* 86 */ static final Date refreshStartDate = new Date(new Date().getTime() + CACHE_MOD_TIMEDELAY);
+/* */
+/* 88 */ static Vector<CacheEntry> threadQueue = new Vector();
+/* */
+/* */ public static final int START = 0;
+/* */
+/* */ public static final int REFRESHING = 2;
+/* */
+/* */ public static final int LOADING = 3;
+/* */
+/* */ public static final int DONE = 4;
+/* */
+/* */ public static final int ERROR = 5;
+/* */
+/* */ public static final int NOSUCHFILE = 6;
+/* */
+/* */ public static final int LOADED = 7;
+/* */
+/* */ public transient CacheEntry next;
+/* */
+/* */ public transient CacheEntry prev;
+/* */
+/* */ int state;
+/* */
+/* */ private transient int count;
+/* */
+/* */ URL url;
+/* */
+/* */ transient int lastRefTime;
+/* */ transient String encoding;
+/* */ String localName;
+/* */ transient Vector<Observer> observers;
+/* 118 */ public long remoteTime = 0L;
+/* */ public Date checkTime;
+/* 120 */ public int netSize = -1;
+/* */
+/* */ public int bytes;
+/* */
+/* */ private transient CacheEntry nextDec;
+/* */
+/* 126 */ private static CacheEntry endDec = new CacheEntry();
+/* 127 */ private static CacheEntry baseDec = endDec;
+/* */
+/* */
+/* 130 */ static int refTime = 0;
+/* 131 */ static int numActiveThreads = 0;
+/* */
+/* */ public static int getConcurrentDownloads() {
+/* 134 */ return numActiveThreads;
+/* */ }
+/* */
+/* */ public static synchronized void setOffline() {
+/* 138 */ stopOnFault = httpFaulted = 1;
+/* */ }
+/* */
+/* */ public static boolean getOffline() {
+/* 142 */ return httpFaulted;
+/* */ }
+/* */
+/* */
+/* */
+/* */ public boolean inUse()
+/* */ {
+/* 149 */ return (this.count > 0) || (this.state == 3) || (this.state == 2);
+/* */ }
+/* */
+/* */
+/* */
+/* */ private synchronized void setState(int val)
+/* */ {
+/* 156 */ this.state = val;
+/* 157 */ if (val >= 4) {
+/* 158 */ notifyAll();
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */ boolean done()
+/* */ {
+/* 166 */ return this.state >= 4;
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */ CacheEntry()
+/* */ {
+/* 174 */ this.next = this;
+/* 175 */ this.prev = this;
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ CacheEntry(URL u)
+/* */ {
+/* 189 */ this.url = u;
+/* */
+/* 191 */ this.localName = Cache.assignLocalName(u);
+/* */
+/* */
+/* 194 */ setState(0);
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public void incRef()
+/* */ {
+/* 205 */ synchronized (finalizeSafeLock) {
+/* 206 */ this.count += 1;
+/* */ }
+/* 208 */ if (this.count == 1) {
+/* 209 */ load();
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* 215 */ private static Object finalizeSafeLock = new Object();
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ void safeDecRef()
+/* */ {
+/* 242 */ synchronized (finalizeSafeLock)
+/* */ {
+/* */
+/* */
+/* 246 */ if (this.nextDec == null)
+/* */ {
+/* 248 */ this.nextDec = baseDec;
+/* 249 */ baseDec = this;
+/* */ } else {
+/* 251 */ this.count -= 1;
+/* 252 */ this.lastRefTime = (refTime++);
+/* */ }
+/* */ }
+/* */ }
+/* */
+/* */ synchronized void fullDecRef() {
+/* 258 */ notifyAll();
+/* 259 */ synchronized (Cache.cache) {
+/* 260 */ synchronized (finalizeSafeLock) {
+/* 261 */ this.count -= 1;
+/* 262 */ this.lastRefTime = (refTime++);
+/* */ }
+/* */
+/* */
+/* */
+/* 267 */ if ((this.count == 0) && (this.remoteTime <= 0L) && (this.state == 7)) {
+/* 268 */ Cache.cache.remove(this);
+/* */ }
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */ void addObserver(Observer o)
+/* */ {
+/* 278 */ if (this.state >= 4) {
+/* 279 */ o.update(null, this.url);
+/* */ } else {
+/* 281 */ synchronized (this) {
+/* 282 */ if (this.observers == null) {
+/* 283 */ this.observers = new Vector();
+/* */ }
+/* 285 */ this.observers.addElement(o);
+/* */ }
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ void notifyObservers()
+/* */ {
+/* 296 */ synchronized (this) {
+/* 297 */ Vector<Observer> v = this.observers;
+/* 298 */ this.observers = null;
+/* */ }
+/* */ Vector<Observer> v;
+/* 301 */ if (v != null) {
+/* 302 */ int len = v.size();
+/* 303 */ for (int i = 0; i < len; i++) {
+/* 304 */ ((Observer)v.elementAt(i)).update(null, this.url);
+/* */ }
+/* */ }
+/* */ }
+/* */
+/* */
+/* */ URLConnection openURL()
+/* */ throws Exception
+/* */ {
+/* 313 */ int retryCount = IniFile.gamma().getIniInt("NetCacheRetries", 8);
+/* 314 */ java.net.URL u = null;
+/* 315 */ URLConnection uc = null;
+/* */
+/* 317 */ while (!httpFaulted) {
+/* */ try {
+/* 319 */ if (u == null) {
+/* 320 */ String us = this.url.unalias();
+/* */
+/* */
+/* 323 */ if (us.endsWith("upgrades.lst")) {
+/* 324 */ us = us + "?" + (int)(Math.random() * 1000000.0D);
+/* */ }
+/* 326 */ u = DNSLookup.lookup(new java.net.URL(us));
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* 339 */ uc = u.openConnection();
+/* */
+/* */
+/* 342 */ uc.setRequestProperty("Accept-Encoding", "gzip,deflate");
+/* */
+/* */
+/* 345 */ if ((this.remoteTime > 0L) && (this.bytes > 0)) {
+/* 346 */ uc.setIfModifiedSince(this.remoteTime);
+/* */ }
+/* */
+/* */
+/* */
+/* 351 */ uc.connect();
+/* */
+/* 353 */ this.encoding = uc.getContentEncoding();
+/* 354 */ if (this.encoding == null) {
+/* 355 */ this.encoding = new String("none");
+/* */ }
+/* */
+/* */
+/* 359 */ this.remoteTime = uc.getLastModified();
+/* 360 */ this.netSize = uc.getContentLength();
+/* */
+/* 362 */ return uc;
+/* */ } catch (UnknownHostException uhe) {
+/* 364 */ if ((NetUpdate.isInternalVersion()) || (stopOnFault)) {
+/* 365 */ httpFaulted = true;
+/* */ }
+/* 367 */ throw uhe;
+/* */ } catch (IOException e) {
+/* 369 */ retryCount--;
+/* */
+/* 371 */ if (wasHttpNoSuchFile(e, uc)) {
+/* 372 */ throw new FileNotFoundException("Http " + this.url);
+/* */ }
+/* */
+/* 375 */ if ((retryCount <= 0) || ((e instanceof MalformedURLException)))
+/* 376 */ throw e;
+/* 377 */ if (this.state == 2) {
+/* 378 */ throw e;
+/* */ }
+/* 380 */ System.out.println("Exception " + e + " opening " + this.url +
+/* 381 */ ", retrying...");
+/* */ }
+/* */ }
+/* */
+/* 385 */ throw new FileNotFoundException("Http " + this.url);
+/* */ }
+/* */
+/* */ private static boolean wasHttpNoSuchFile(Exception e, URLConnection uc) {
+/* */ try {
+/* 390 */ if (((HttpURLConnection)uc).getResponseCode() == 404) {
+/* 391 */ return true;
+/* */ }
+/* */ }
+/* */ catch (Exception localException) {}
+/* 395 */ return false;
+/* */ }
+/* */
+/* */
+/* */
+/* */ public void forceRecheck()
+/* */ {
+/* 402 */ this.checkTime = null;
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public void load()
+/* */ {
+/* 413 */ if ((this.state == 2) || (this.state == 3)) {
+/* 414 */ return;
+/* */ }
+/* */
+/* 417 */ Date now = new Date();
+/* */
+/* 419 */ if ((this.state == 5) || (this.state == 0)) {
+/* 420 */ setState(3);
+/* 421 */ } else if (this.localName != null)
+/* */ {
+/* */
+/* 424 */ if ((this.checkTime != null) && (now.before(refreshStartDate)))
+/* */ {
+/* 426 */ notifyObservers();
+/* 427 */ return;
+/* */ }
+/* */
+/* 430 */ Date aWhileAgo = new Date(now.getTime() - CACHE_MOD_TIMEOUT);
+/* 431 */ if ((this.checkTime != null) && (this.checkTime.after(aWhileAgo)))
+/* */ {
+/* 433 */ if ((this.remoteTime > 0L) || (this.state == 6)) {
+/* 434 */ notifyObservers();
+/* 435 */ return;
+/* */ }
+/* */ }
+/* 438 */ setState(2);
+/* */ }
+/* 440 */ this.checkTime = now;
+/* */
+/* 442 */ synchronized (threadQueue)
+/* */ {
+/* 444 */ if (numActiveThreads < MAX_THREADS) {
+/* 445 */ startThread();
+/* */ }
+/* */ else
+/* */ {
+/* 449 */ threadQueue.addElement(this);
+/* */ }
+/* */ }
+/* */ }
+/* */
+/* 454 */ private static int nextDownloader = 0;
+/* */
+/* */
+/* */
+/* */
+/* */ private void startThread()
+/* */ {
+/* 461 */ numActiveThreads += 1;
+/* 462 */ Thread t = new Thread(this, "File Downloader " + ++nextDownloader);
+/* 463 */ t.setDaemon(true);
+/* 464 */ t.start();
+/* */ }
+/* */
+/* */ /* Error */
+/* */ public void run()
+/* */ {
+/* */ // Byte code:
+/* */ // 0: aconst_null
+/* */ // 1: astore_1
+/* */ // 2: aconst_null
+/* */ // 3: astore_2
+/* */ // 4: aload_0
+/* */ // 5: getfield 165 NET/worlds/network/CacheEntry:remoteTime J
+/* */ // 8: lstore_3
+/* */ // 9: aload_0
+/* */ // 10: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 13: istore 5
+/* */ // 15: aload_0
+/* */ // 16: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 19: istore 6
+/* */ // 21: aload_0
+/* */ // 22: getfield 155 NET/worlds/network/CacheEntry:state I
+/* */ // 25: iconst_2
+/* */ // 26: if_icmpne +405 -> 431
+/* */ // 29: invokestatic 418 NET/worlds/network/CacheEntry:getOffline ()Z
+/* */ // 32: ifeq +45 -> 77
+/* */ // 35: aload_0
+/* */ // 36: bipush 7
+/* */ // 38: invokespecial 184 NET/worlds/network/CacheEntry:setState (I)V
+/* */ // 41: getstatic 199 NET/worlds/network/Cache:cache LNET/worlds/network/Cache;
+/* */ // 44: dup
+/* */ // 45: getfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 48: aload_0
+/* */ // 49: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 52: i2l
+/* */ // 53: ladd
+/* */ // 54: putfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 57: aload_0
+/* */ // 58: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 61: ifgt +11 -> 72
+/* */ // 64: aload_0
+/* */ // 65: aload_0
+/* */ // 66: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 69: putfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 72: aload_0
+/* */ // 73: invokespecial 423 NET/worlds/network/CacheEntry:finishedLoad ()V
+/* */ // 76: return
+/* */ // 77: aload_0
+/* */ // 78: getfield 174 NET/worlds/network/CacheEntry:url LNET/worlds/network/URL;
+/* */ // 81: invokestatic 426 NET/worlds/network/DirTimeStamp:request (LNET/worlds/network/URL;)J
+/* */ // 84: lstore 7
+/* */ // 86: lload 7
+/* */ // 88: lconst_0
+/* */ // 89: lcmp
+/* */ // 90: ifle +71 -> 161
+/* */ // 93: lload 7
+/* */ // 95: lload_3
+/* */ // 96: lcmp
+/* */ // 97: ifgt +64 -> 161
+/* */ // 100: new 111 java/util/Date
+/* */ // 103: dup
+/* */ // 104: invokespecial 113 java/util/Date:<init> ()V
+/* */ // 107: invokevirtual 116 java/util/Date:getTime ()J
+/* */ // 110: lload_3
+/* */ // 111: lcmp
+/* */ // 112: ifge +49 -> 161
+/* */ // 115: aload_0
+/* */ // 116: bipush 7
+/* */ // 118: invokespecial 184 NET/worlds/network/CacheEntry:setState (I)V
+/* */ // 121: aload_0
+/* */ // 122: invokespecial 423 NET/worlds/network/CacheEntry:finishedLoad ()V
+/* */ // 125: getstatic 199 NET/worlds/network/Cache:cache LNET/worlds/network/Cache;
+/* */ // 128: dup
+/* */ // 129: getfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 132: aload_0
+/* */ // 133: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 136: i2l
+/* */ // 137: ladd
+/* */ // 138: putfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 141: aload_0
+/* */ // 142: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 145: ifgt +11 -> 156
+/* */ // 148: aload_0
+/* */ // 149: aload_0
+/* */ // 150: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 153: putfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 156: aload_0
+/* */ // 157: invokespecial 423 NET/worlds/network/CacheEntry:finishedLoad ()V
+/* */ // 160: return
+/* */ // 161: aload_0
+/* */ // 162: invokevirtual 432 NET/worlds/network/CacheEntry:openURL ()Ljava/net/URLConnection;
+/* */ // 165: astore_2
+/* */ // 166: aload_0
+/* */ // 167: getfield 165 NET/worlds/network/CacheEntry:remoteTime J
+/* */ // 170: lconst_0
+/* */ // 171: lcmp
+/* */ // 172: ifle +106 -> 278
+/* */ // 175: aload_0
+/* */ // 176: getfield 165 NET/worlds/network/CacheEntry:remoteTime J
+/* */ // 179: lload_3
+/* */ // 180: lcmp
+/* */ // 181: ifgt +97 -> 278
+/* */ // 184: iload 5
+/* */ // 186: iconst_m1
+/* */ // 187: if_icmpeq +29 -> 216
+/* */ // 190: aload_0
+/* */ // 191: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 194: iconst_m1
+/* */ // 195: if_icmpeq +21 -> 216
+/* */ // 198: iload 5
+/* */ // 200: aload_0
+/* */ // 201: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 204: if_icmpeq +12 -> 216
+/* */ // 207: aload_0
+/* */ // 208: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 211: iload 6
+/* */ // 213: if_icmpne +65 -> 278
+/* */ // 216: aload_2
+/* */ // 217: invokevirtual 434 java/net/URLConnection:getInputStream ()Ljava/io/InputStream;
+/* */ // 220: astore 9
+/* */ // 222: aload 9
+/* */ // 224: ifnull +8 -> 232
+/* */ // 227: aload 9
+/* */ // 229: invokevirtual 438 java/io/InputStream:close ()V
+/* */ // 232: aload_0
+/* */ // 233: bipush 7
+/* */ // 235: invokespecial 184 NET/worlds/network/CacheEntry:setState (I)V
+/* */ // 238: aload_0
+/* */ // 239: invokespecial 423 NET/worlds/network/CacheEntry:finishedLoad ()V
+/* */ // 242: getstatic 199 NET/worlds/network/Cache:cache LNET/worlds/network/Cache;
+/* */ // 245: dup
+/* */ // 246: getfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 249: aload_0
+/* */ // 250: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 253: i2l
+/* */ // 254: ladd
+/* */ // 255: putfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 258: aload_0
+/* */ // 259: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 262: ifgt +11 -> 273
+/* */ // 265: aload_0
+/* */ // 266: aload_0
+/* */ // 267: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 270: putfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 273: aload_0
+/* */ // 274: invokespecial 423 NET/worlds/network/CacheEntry:finishedLoad ()V
+/* */ // 277: return
+/* */ // 278: aload_2
+/* */ // 279: instanceof 378
+/* */ // 282: ifeq +144 -> 426
+/* */ // 285: aload_2
+/* */ // 286: checkcast 378 java/net/HttpURLConnection
+/* */ // 289: invokevirtual 380 java/net/HttpURLConnection:getResponseCode ()I
+/* */ // 292: istore 9
+/* */ // 294: iconst_0
+/* */ // 295: istore 10
+/* */ // 297: iload 9
+/* */ // 299: lookupswitch default:+60->359, 304:+57->356, 400:+57->356, 500:+57->356, 502:+57->356, 503:+57->356, 504:+57->356
+/* */ // 356: iconst_1
+/* */ // 357: istore 10
+/* */ // 359: iload 10
+/* */ // 361: ifeq +65 -> 426
+/* */ // 364: aload_2
+/* */ // 365: invokevirtual 434 java/net/URLConnection:getInputStream ()Ljava/io/InputStream;
+/* */ // 368: astore 11
+/* */ // 370: aload 11
+/* */ // 372: ifnull +8 -> 380
+/* */ // 375: aload 11
+/* */ // 377: invokevirtual 438 java/io/InputStream:close ()V
+/* */ // 380: aload_0
+/* */ // 381: bipush 7
+/* */ // 383: invokespecial 184 NET/worlds/network/CacheEntry:setState (I)V
+/* */ // 386: aload_0
+/* */ // 387: invokespecial 423 NET/worlds/network/CacheEntry:finishedLoad ()V
+/* */ // 390: getstatic 199 NET/worlds/network/Cache:cache LNET/worlds/network/Cache;
+/* */ // 393: dup
+/* */ // 394: getfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 397: aload_0
+/* */ // 398: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 401: i2l
+/* */ // 402: ladd
+/* */ // 403: putfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 406: aload_0
+/* */ // 407: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 410: ifgt +11 -> 421
+/* */ // 413: aload_0
+/* */ // 414: aload_0
+/* */ // 415: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 418: putfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 421: aload_0
+/* */ // 422: invokespecial 423 NET/worlds/network/CacheEntry:finishedLoad ()V
+/* */ // 425: return
+/* */ // 426: aload_0
+/* */ // 427: iconst_3
+/* */ // 428: invokespecial 184 NET/worlds/network/CacheEntry:setState (I)V
+/* */ // 431: getstatic 199 NET/worlds/network/Cache:cache LNET/worlds/network/Cache;
+/* */ // 434: dup
+/* */ // 435: getfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 438: aload_0
+/* */ // 439: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 442: i2l
+/* */ // 443: lsub
+/* */ // 444: putfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 447: iconst_0
+/* */ // 448: istore 7
+/* */ // 450: goto +430 -> 880
+/* */ // 453: aload_0
+/* */ // 454: iconst_0
+/* */ // 455: putfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 458: aconst_null
+/* */ // 459: astore_1
+/* */ // 460: aload_2
+/* */ // 461: ifnonnull +12 -> 473
+/* */ // 464: aload_0
+/* */ // 465: invokevirtual 432 NET/worlds/network/CacheEntry:openURL ()Ljava/net/URLConnection;
+/* */ // 468: astore_2
+/* */ // 469: aload_2
+/* */ // 470: invokevirtual 312 java/net/URLConnection:connect ()V
+/* */ // 473: aload_2
+/* */ // 474: instanceof 378
+/* */ // 477: ifeq +165 -> 642
+/* */ // 480: aload_2
+/* */ // 481: checkcast 378 java/net/HttpURLConnection
+/* */ // 484: invokevirtual 380 java/net/HttpURLConnection:getResponseCode ()I
+/* */ // 487: istore 8
+/* */ // 489: iconst_0
+/* */ // 490: istore 9
+/* */ // 492: iload 8
+/* */ // 494: lookupswitch default:+53->547, 304:+50->544, 500:+50->544, 502:+50->544, 503:+50->544, 504:+50->544
+/* */ // 544: iconst_1
+/* */ // 545: istore 9
+/* */ // 547: iload 9
+/* */ // 549: ifeq +93 -> 642
+/* */ // 552: aload_2
+/* */ // 553: invokevirtual 434 java/net/URLConnection:getInputStream ()Ljava/io/InputStream;
+/* */ // 556: astore 10
+/* */ // 558: aload 10
+/* */ // 560: ifnull +8 -> 568
+/* */ // 563: aload 10
+/* */ // 565: invokevirtual 438 java/io/InputStream:close ()V
+/* */ // 568: aload_0
+/* */ // 569: iload 6
+/* */ // 571: putfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 574: getstatic 199 NET/worlds/network/Cache:cache LNET/worlds/network/Cache;
+/* */ // 577: dup
+/* */ // 578: getfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 581: aload_0
+/* */ // 582: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 585: i2l
+/* */ // 586: ladd
+/* */ // 587: putfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 590: aload_0
+/* */ // 591: iload 5
+/* */ // 593: putfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 596: aload_0
+/* */ // 597: bipush 7
+/* */ // 599: invokespecial 184 NET/worlds/network/CacheEntry:setState (I)V
+/* */ // 602: aload_0
+/* */ // 603: invokespecial 423 NET/worlds/network/CacheEntry:finishedLoad ()V
+/* */ // 606: getstatic 199 NET/worlds/network/Cache:cache LNET/worlds/network/Cache;
+/* */ // 609: dup
+/* */ // 610: getfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 613: aload_0
+/* */ // 614: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 617: i2l
+/* */ // 618: ladd
+/* */ // 619: putfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 622: aload_0
+/* */ // 623: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 626: ifgt +11 -> 637
+/* */ // 629: aload_0
+/* */ // 630: aload_0
+/* */ // 631: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 634: putfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 637: aload_0
+/* */ // 638: invokespecial 423 NET/worlds/network/CacheEntry:finishedLoad ()V
+/* */ // 641: return
+/* */ // 642: aload_0
+/* */ // 643: getfield 318 NET/worlds/network/CacheEntry:encoding Ljava/lang/String;
+/* */ // 646: ifnull +32 -> 678
+/* */ // 649: aload_0
+/* */ // 650: getfield 318 NET/worlds/network/CacheEntry:encoding Ljava/lang/String;
+/* */ // 653: ldc_w 443
+/* */ // 656: invokevirtual 445 java/lang/String:equalsIgnoreCase (Ljava/lang/String;)Z
+/* */ // 659: ifeq +19 -> 678
+/* */ // 662: new 448 java/util/zip/GZIPInputStream
+/* */ // 665: dup
+/* */ // 666: aload_2
+/* */ // 667: invokevirtual 434 java/net/URLConnection:getInputStream ()Ljava/io/InputStream;
+/* */ // 670: invokespecial 450 java/util/zip/GZIPInputStream:<init> (Ljava/io/InputStream;)V
+/* */ // 673: astore 8
+/* */ // 675: goto +53 -> 728
+/* */ // 678: aload_0
+/* */ // 679: getfield 318 NET/worlds/network/CacheEntry:encoding Ljava/lang/String;
+/* */ // 682: ifnull +40 -> 722
+/* */ // 685: aload_0
+/* */ // 686: getfield 318 NET/worlds/network/CacheEntry:encoding Ljava/lang/String;
+/* */ // 689: ldc_w 453
+/* */ // 692: invokevirtual 445 java/lang/String:equalsIgnoreCase (Ljava/lang/String;)Z
+/* */ // 695: ifeq +27 -> 722
+/* */ // 698: new 455 java/util/zip/InflaterInputStream
+/* */ // 701: dup
+/* */ // 702: aload_2
+/* */ // 703: invokevirtual 434 java/net/URLConnection:getInputStream ()Ljava/io/InputStream;
+/* */ // 706: new 457 java/util/zip/Inflater
+/* */ // 709: dup
+/* */ // 710: iconst_1
+/* */ // 711: invokespecial 459 java/util/zip/Inflater:<init> (Z)V
+/* */ // 714: invokespecial 461 java/util/zip/InflaterInputStream:<init> (Ljava/io/InputStream;Ljava/util/zip/Inflater;)V
+/* */ // 717: astore 8
+/* */ // 719: goto +9 -> 728
+/* */ // 722: aload_2
+/* */ // 723: invokevirtual 434 java/net/URLConnection:getInputStream ()Ljava/io/InputStream;
+/* */ // 726: astore 8
+/* */ // 728: getstatic 199 NET/worlds/network/Cache:cache LNET/worlds/network/Cache;
+/* */ // 731: aload_0
+/* */ // 732: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 735: invokevirtual 464 NET/worlds/network/Cache:makeSpaceFor (I)V
+/* */ // 738: new 467 java/io/FileOutputStream
+/* */ // 741: dup
+/* */ // 742: aload_0
+/* */ // 743: getfield 182 NET/worlds/network/CacheEntry:localName Ljava/lang/String;
+/* */ // 746: invokespecial 469 java/io/FileOutputStream:<init> (Ljava/lang/String;)V
+/* */ // 749: astore_1
+/* */ // 750: sipush 4096
+/* */ // 753: newarray <illegal type>
+/* */ // 755: astore 9
+/* */ // 757: goto +23 -> 780
+/* */ // 760: aload_1
+/* */ // 761: aload 9
+/* */ // 763: iconst_0
+/* */ // 764: iload 10
+/* */ // 766: invokevirtual 470 java/io/FileOutputStream:write ([BII)V
+/* */ // 769: aload_0
+/* */ // 770: dup
+/* */ // 771: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 774: iload 10
+/* */ // 776: iadd
+/* */ // 777: putfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 780: aload 8
+/* */ // 782: aload 9
+/* */ // 784: invokevirtual 474 java/io/InputStream:read ([B)I
+/* */ // 787: dup
+/* */ // 788: istore 10
+/* */ // 790: ifgt -30 -> 760
+/* */ // 793: aload 8
+/* */ // 795: invokevirtual 438 java/io/InputStream:close ()V
+/* */ // 798: aconst_null
+/* */ // 799: astore 8
+/* */ // 801: aload_1
+/* */ // 802: invokevirtual 478 java/io/FileOutputStream:close ()V
+/* */ // 805: aconst_null
+/* */ // 806: astore_1
+/* */ // 807: aload_0
+/* */ // 808: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 811: iconst_m1
+/* */ // 812: if_icmpeq +40 -> 852
+/* */ // 815: aload_0
+/* */ // 816: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 819: aload_0
+/* */ // 820: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 823: if_icmpge +29 -> 852
+/* */ // 826: aload_0
+/* */ // 827: getfield 318 NET/worlds/network/CacheEntry:encoding Ljava/lang/String;
+/* */ // 830: ldc_w 443
+/* */ // 833: invokevirtual 445 java/lang/String:equalsIgnoreCase (Ljava/lang/String;)Z
+/* */ // 836: ifne +16 -> 852
+/* */ // 839: aload_0
+/* */ // 840: getfield 318 NET/worlds/network/CacheEntry:encoding Ljava/lang/String;
+/* */ // 843: ldc_w 453
+/* */ // 846: invokevirtual 445 java/lang/String:equalsIgnoreCase (Ljava/lang/String;)Z
+/* */ // 849: ifeq +12 -> 861
+/* */ // 852: aload_0
+/* */ // 853: bipush 7
+/* */ // 855: invokespecial 184 NET/worlds/network/CacheEntry:setState (I)V
+/* */ // 858: goto +28 -> 886
+/* */ // 861: iload 7
+/* */ // 863: ifne +12 -> 875
+/* */ // 866: getstatic 348 java/lang/System:out Ljava/io/PrintStream;
+/* */ // 869: ldc_w 479
+/* */ // 872: invokevirtual 360 java/io/PrintStream:println (Ljava/lang/String;)V
+/* */ // 875: aconst_null
+/* */ // 876: astore_2
+/* */ // 877: iinc 7 1
+/* */ // 880: iload 7
+/* */ // 882: iconst_2
+/* */ // 883: if_icmplt -430 -> 453
+/* */ // 886: aload_0
+/* */ // 887: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 890: iflt +87 -> 977
+/* */ // 893: aload_0
+/* */ // 894: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 897: aload_0
+/* */ // 898: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 901: if_icmpge +76 -> 977
+/* */ // 904: aload_0
+/* */ // 905: getfield 318 NET/worlds/network/CacheEntry:encoding Ljava/lang/String;
+/* */ // 908: ldc_w 443
+/* */ // 911: invokevirtual 445 java/lang/String:equalsIgnoreCase (Ljava/lang/String;)Z
+/* */ // 914: ifne +63 -> 977
+/* */ // 917: aload_0
+/* */ // 918: getfield 318 NET/worlds/network/CacheEntry:encoding Ljava/lang/String;
+/* */ // 921: ldc_w 453
+/* */ // 924: invokevirtual 445 java/lang/String:equalsIgnoreCase (Ljava/lang/String;)Z
+/* */ // 927: ifne +50 -> 977
+/* */ // 930: new 481 java/lang/InterruptedException
+/* */ // 933: dup
+/* */ // 934: new 256 java/lang/StringBuilder
+/* */ // 937: dup
+/* */ // 938: ldc_w 483
+/* */ // 941: invokespecial 262 java/lang/StringBuilder:<init> (Ljava/lang/String;)V
+/* */ // 944: aload_0
+/* */ // 945: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 948: invokevirtual 279 java/lang/StringBuilder:append (I)Ljava/lang/StringBuilder;
+/* */ // 951: ldc_w 485
+/* */ // 954: invokevirtual 267 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+/* */ // 957: aload_0
+/* */ // 958: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 961: invokevirtual 279 java/lang/StringBuilder:append (I)Ljava/lang/StringBuilder;
+/* */ // 964: ldc_w 487
+/* */ // 967: invokevirtual 267 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+/* */ // 970: invokevirtual 282 java/lang/StringBuilder:toString ()Ljava/lang/String;
+/* */ // 973: invokespecial 489 java/lang/InterruptedException:<init> (Ljava/lang/String;)V
+/* */ // 976: athrow
+/* */ // 977: iload 7
+/* */ // 979: ifle +12 -> 991
+/* */ // 982: getstatic 348 java/lang/System:out Ljava/io/PrintStream;
+/* */ // 985: ldc_w 490
+/* */ // 988: invokevirtual 360 java/io/PrintStream:println (Ljava/lang/String;)V
+/* */ // 991: getstatic 199 NET/worlds/network/Cache:cache LNET/worlds/network/Cache;
+/* */ // 994: dup
+/* */ // 995: getfield 492 NET/worlds/network/Cache:hasChanged I
+/* */ // 998: iconst_1
+/* */ // 999: iadd
+/* */ // 1000: putfield 492 NET/worlds/network/Cache:hasChanged I
+/* */ // 1003: aload_0
+/* */ // 1004: bipush 7
+/* */ // 1006: invokespecial 184 NET/worlds/network/CacheEntry:setState (I)V
+/* */ // 1009: goto +256 -> 1265
+/* */ // 1012: astore_3
+/* */ // 1013: getstatic 348 java/lang/System:out Ljava/io/PrintStream;
+/* */ // 1016: new 256 java/lang/StringBuilder
+/* */ // 1019: dup
+/* */ // 1020: ldc_w 495
+/* */ // 1023: invokespecial 262 java/lang/StringBuilder:<init> (Ljava/lang/String;)V
+/* */ // 1026: aload_0
+/* */ // 1027: getfield 174 NET/worlds/network/CacheEntry:url LNET/worlds/network/URL;
+/* */ // 1030: invokevirtual 342 java/lang/StringBuilder:append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
+/* */ // 1033: invokevirtual 282 java/lang/StringBuilder:toString ()Ljava/lang/String;
+/* */ // 1036: invokevirtual 360 java/io/PrintStream:println (Ljava/lang/String;)V
+/* */ // 1039: getstatic 348 java/lang/System:out Ljava/io/PrintStream;
+/* */ // 1042: new 256 java/lang/StringBuilder
+/* */ // 1045: dup
+/* */ // 1046: ldc_w 497
+/* */ // 1049: invokespecial 262 java/lang/StringBuilder:<init> (Ljava/lang/String;)V
+/* */ // 1052: aload_3
+/* */ // 1053: invokevirtual 499 java/lang/Exception:getMessage ()Ljava/lang/String;
+/* */ // 1056: invokevirtual 267 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+/* */ // 1059: invokevirtual 282 java/lang/StringBuilder:toString ()Ljava/lang/String;
+/* */ // 1062: invokevirtual 360 java/io/PrintStream:println (Ljava/lang/String;)V
+/* */ // 1065: getstatic 348 java/lang/System:out Ljava/io/PrintStream;
+/* */ // 1068: new 256 java/lang/StringBuilder
+/* */ // 1071: dup
+/* */ // 1072: ldc_w 497
+/* */ // 1075: invokespecial 262 java/lang/StringBuilder:<init> (Ljava/lang/String;)V
+/* */ // 1078: aload_3
+/* */ // 1079: invokevirtual 502 java/lang/Exception:toString ()Ljava/lang/String;
+/* */ // 1082: invokevirtual 267 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+/* */ // 1085: invokevirtual 282 java/lang/StringBuilder:toString ()Ljava/lang/String;
+/* */ // 1088: invokevirtual 360 java/io/PrintStream:println (Ljava/lang/String;)V
+/* */ // 1091: aload_1
+/* */ // 1092: ifnull +27 -> 1119
+/* */ // 1095: aload_1
+/* */ // 1096: invokevirtual 478 java/io/FileOutputStream:close ()V
+/* */ // 1099: goto +5 -> 1104
+/* */ // 1102: astore 4
+/* */ // 1104: new 503 java/io/File
+/* */ // 1107: dup
+/* */ // 1108: aload_0
+/* */ // 1109: getfield 182 NET/worlds/network/CacheEntry:localName Ljava/lang/String;
+/* */ // 1112: invokespecial 505 java/io/File:<init> (Ljava/lang/String;)V
+/* */ // 1115: invokevirtual 506 java/io/File:delete ()Z
+/* */ // 1118: pop
+/* */ // 1119: aload_3
+/* */ // 1120: aload_2
+/* */ // 1121: invokestatic 334 NET/worlds/network/CacheEntry:wasHttpNoSuchFile (Ljava/lang/Exception;Ljava/net/URLConnection;)Z
+/* */ // 1124: ifne +10 -> 1134
+/* */ // 1127: aload_3
+/* */ // 1128: instanceof 338
+/* */ // 1131: ifeq +17 -> 1148
+/* */ // 1134: aload_0
+/* */ // 1135: bipush 6
+/* */ // 1137: invokespecial 184 NET/worlds/network/CacheEntry:setState (I)V
+/* */ // 1140: aload_0
+/* */ // 1141: iconst_0
+/* */ // 1142: putfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 1145: goto +42 -> 1187
+/* */ // 1148: aload_0
+/* */ // 1149: getfield 155 NET/worlds/network/CacheEntry:state I
+/* */ // 1152: iconst_2
+/* */ // 1153: if_icmpne +24 -> 1177
+/* */ // 1156: getstatic 199 NET/worlds/network/Cache:cache LNET/worlds/network/Cache;
+/* */ // 1159: dup
+/* */ // 1160: getfield 492 NET/worlds/network/Cache:hasChanged I
+/* */ // 1163: iconst_1
+/* */ // 1164: iadd
+/* */ // 1165: putfield 492 NET/worlds/network/Cache:hasChanged I
+/* */ // 1168: aload_0
+/* */ // 1169: bipush 7
+/* */ // 1171: invokespecial 184 NET/worlds/network/CacheEntry:setState (I)V
+/* */ // 1174: goto +13 -> 1187
+/* */ // 1177: aload_0
+/* */ // 1178: iconst_0
+/* */ // 1179: putfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 1182: aload_0
+/* */ // 1183: iconst_5
+/* */ // 1184: invokespecial 184 NET/worlds/network/CacheEntry:setState (I)V
+/* */ // 1187: getstatic 199 NET/worlds/network/Cache:cache LNET/worlds/network/Cache;
+/* */ // 1190: dup
+/* */ // 1191: getfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 1194: aload_0
+/* */ // 1195: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 1198: i2l
+/* */ // 1199: ladd
+/* */ // 1200: putfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 1203: aload_0
+/* */ // 1204: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 1207: ifgt +11 -> 1218
+/* */ // 1210: aload_0
+/* */ // 1211: aload_0
+/* */ // 1212: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 1215: putfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 1218: aload_0
+/* */ // 1219: invokespecial 423 NET/worlds/network/CacheEntry:finishedLoad ()V
+/* */ // 1222: goto +78 -> 1300
+/* */ // 1225: astore 12
+/* */ // 1227: getstatic 199 NET/worlds/network/Cache:cache LNET/worlds/network/Cache;
+/* */ // 1230: dup
+/* */ // 1231: getfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 1234: aload_0
+/* */ // 1235: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 1238: i2l
+/* */ // 1239: ladd
+/* */ // 1240: putfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 1243: aload_0
+/* */ // 1244: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 1247: ifgt +11 -> 1258
+/* */ // 1250: aload_0
+/* */ // 1251: aload_0
+/* */ // 1252: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 1255: putfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 1258: aload_0
+/* */ // 1259: invokespecial 423 NET/worlds/network/CacheEntry:finishedLoad ()V
+/* */ // 1262: aload 12
+/* */ // 1264: athrow
+/* */ // 1265: getstatic 199 NET/worlds/network/Cache:cache LNET/worlds/network/Cache;
+/* */ // 1268: dup
+/* */ // 1269: getfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 1272: aload_0
+/* */ // 1273: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 1276: i2l
+/* */ // 1277: ladd
+/* */ // 1278: putfield 420 NET/worlds/network/Cache:totalBytes J
+/* */ // 1281: aload_0
+/* */ // 1282: getfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 1285: ifgt +11 -> 1296
+/* */ // 1288: aload_0
+/* */ // 1289: aload_0
+/* */ // 1290: getfield 307 NET/worlds/network/CacheEntry:bytes I
+/* */ // 1293: putfield 167 NET/worlds/network/CacheEntry:netSize I
+/* */ // 1296: aload_0
+/* */ // 1297: invokespecial 423 NET/worlds/network/CacheEntry:finishedLoad ()V
+/* */ // 1300: return
+/* */ // Line number table:
+/* */ // Java source line #473 -> byte code offset #0
+/* */ // Java source line #474 -> byte code offset #2
+/* */ // Java source line #478 -> byte code offset #4
+/* */ // Java source line #479 -> byte code offset #9
+/* */ // Java source line #480 -> byte code offset #15
+/* */ // Java source line #482 -> byte code offset #21
+/* */ // Java source line #486 -> byte code offset #29
+/* */ // Java source line #487 -> byte code offset #35
+/* */ // Java source line #712 -> byte code offset #41
+/* */ // Java source line #713 -> byte code offset #57
+/* */ // Java source line #714 -> byte code offset #64
+/* */ // Java source line #718 -> byte code offset #72
+/* */ // Java source line #488 -> byte code offset #76
+/* */ // Java source line #492 -> byte code offset #77
+/* */ // Java source line #495 -> byte code offset #86
+/* */ // Java source line #496 -> byte code offset #100
+/* */ // Java source line #498 -> byte code offset #115
+/* */ // Java source line #499 -> byte code offset #121
+/* */ // Java source line #712 -> byte code offset #125
+/* */ // Java source line #713 -> byte code offset #141
+/* */ // Java source line #714 -> byte code offset #148
+/* */ // Java source line #718 -> byte code offset #156
+/* */ // Java source line #500 -> byte code offset #160
+/* */ // Java source line #504 -> byte code offset #161
+/* */ // Java source line #509 -> byte code offset #166
+/* */ // Java source line #510 -> byte code offset #175
+/* */ // Java source line #511 -> byte code offset #184
+/* */ // Java source line #512 -> byte code offset #198
+/* */ // Java source line #514 -> byte code offset #216
+/* */ // Java source line #515 -> byte code offset #222
+/* */ // Java source line #516 -> byte code offset #227
+/* */ // Java source line #518 -> byte code offset #232
+/* */ // Java source line #519 -> byte code offset #238
+/* */ // Java source line #712 -> byte code offset #242
+/* */ // Java source line #713 -> byte code offset #258
+/* */ // Java source line #714 -> byte code offset #265
+/* */ // Java source line #718 -> byte code offset #273
+/* */ // Java source line #520 -> byte code offset #277
+/* */ // Java source line #535 -> byte code offset #278
+/* */ // Java source line #536 -> byte code offset #285
+/* */ // Java source line #537 -> byte code offset #289
+/* */ // Java source line #536 -> byte code offset #292
+/* */ // Java source line #538 -> byte code offset #294
+/* */ // Java source line #542 -> byte code offset #297
+/* */ // Java source line #549 -> byte code offset #356
+/* */ // Java source line #552 -> byte code offset #359
+/* */ // Java source line #554 -> byte code offset #364
+/* */ // Java source line #555 -> byte code offset #370
+/* */ // Java source line #556 -> byte code offset #375
+/* */ // Java source line #558 -> byte code offset #380
+/* */ // Java source line #559 -> byte code offset #386
+/* */ // Java source line #712 -> byte code offset #390
+/* */ // Java source line #713 -> byte code offset #406
+/* */ // Java source line #714 -> byte code offset #413
+/* */ // Java source line #718 -> byte code offset #421
+/* */ // Java source line #560 -> byte code offset #425
+/* */ // Java source line #564 -> byte code offset #426
+/* */ // Java source line #566 -> byte code offset #431
+/* */ // Java source line #569 -> byte code offset #447
+/* */ // Java source line #570 -> byte code offset #453
+/* */ // Java source line #572 -> byte code offset #458
+/* */ // Java source line #574 -> byte code offset #460
+/* */ // Java source line #575 -> byte code offset #464
+/* */ // Java source line #576 -> byte code offset #469
+/* */ // Java source line #581 -> byte code offset #473
+/* */ // Java source line #583 -> byte code offset #480
+/* */ // Java source line #584 -> byte code offset #484
+/* */ // Java source line #583 -> byte code offset #487
+/* */ // Java source line #585 -> byte code offset #489
+/* */ // Java source line #589 -> byte code offset #492
+/* */ // Java source line #595 -> byte code offset #544
+/* */ // Java source line #598 -> byte code offset #547
+/* */ // Java source line #600 -> byte code offset #552
+/* */ // Java source line #601 -> byte code offset #558
+/* */ // Java source line #602 -> byte code offset #563
+/* */ // Java source line #605 -> byte code offset #568
+/* */ // Java source line #606 -> byte code offset #574
+/* */ // Java source line #607 -> byte code offset #590
+/* */ // Java source line #608 -> byte code offset #596
+/* */ // Java source line #609 -> byte code offset #602
+/* */ // Java source line #712 -> byte code offset #606
+/* */ // Java source line #713 -> byte code offset #622
+/* */ // Java source line #714 -> byte code offset #629
+/* */ // Java source line #718 -> byte code offset #637
+/* */ // Java source line #611 -> byte code offset #641
+/* */ // Java source line #620 -> byte code offset #642
+/* */ // Java source line #622 -> byte code offset #662
+/* */ // Java source line #623 -> byte code offset #675
+/* */ // Java source line #624 -> byte code offset #685
+/* */ // Java source line #626 -> byte code offset #698
+/* */ // Java source line #627 -> byte code offset #706
+/* */ // Java source line #626 -> byte code offset #714
+/* */ // Java source line #628 -> byte code offset #719
+/* */ // Java source line #630 -> byte code offset #722
+/* */ // Java source line #633 -> byte code offset #728
+/* */ // Java source line #634 -> byte code offset #738
+/* */ // Java source line #636 -> byte code offset #750
+/* */ // Java source line #638 -> byte code offset #757
+/* */ // Java source line #639 -> byte code offset #760
+/* */ // Java source line #641 -> byte code offset #769
+/* */ // Java source line #638 -> byte code offset #780
+/* */ // Java source line #644 -> byte code offset #793
+/* */ // Java source line #645 -> byte code offset #798
+/* */ // Java source line #647 -> byte code offset #801
+/* */ // Java source line #648 -> byte code offset #805
+/* */ // Java source line #652 -> byte code offset #807
+/* */ // Java source line #653 -> byte code offset #826
+/* */ // Java source line #654 -> byte code offset #839
+/* */ // Java source line #655 -> byte code offset #852
+/* */ // Java source line #656 -> byte code offset #858
+/* */ // Java source line #659 -> byte code offset #861
+/* */ // Java source line #660 -> byte code offset #866
+/* */ // Java source line #661 -> byte code offset #869
+/* */ // Java source line #664 -> byte code offset #875
+/* */ // Java source line #569 -> byte code offset #877
+/* */ // Java source line #667 -> byte code offset #886
+/* */ // Java source line #668 -> byte code offset #893
+/* */ // Java source line #669 -> byte code offset #904
+/* */ // Java source line #670 -> byte code offset #921
+/* */ // Java source line #671 -> byte code offset #930
+/* */ // Java source line #672 -> byte code offset #951
+/* */ // Java source line #671 -> byte code offset #973
+/* */ // Java source line #674 -> byte code offset #977
+/* */ // Java source line #675 -> byte code offset #982
+/* */ // Java source line #679 -> byte code offset #991
+/* */ // Java source line #680 -> byte code offset #1003
+/* */ // Java source line #682 -> byte code offset #1009
+/* */ // Java source line #684 -> byte code offset #1013
+/* */ // Java source line #685 -> byte code offset #1039
+/* */ // Java source line #686 -> byte code offset #1065
+/* */ // Java source line #691 -> byte code offset #1091
+/* */ // Java source line #693 -> byte code offset #1095
+/* */ // Java source line #694 -> byte code offset #1099
+/* */ // Java source line #696 -> byte code offset #1104
+/* */ // Java source line #699 -> byte code offset #1119
+/* */ // Java source line #700 -> byte code offset #1134
+/* */ // Java source line #701 -> byte code offset #1140
+/* */ // Java source line #702 -> byte code offset #1145
+/* */ // Java source line #705 -> byte code offset #1156
+/* */ // Java source line #706 -> byte code offset #1168
+/* */ // Java source line #707 -> byte code offset #1174
+/* */ // Java source line #708 -> byte code offset #1177
+/* */ // Java source line #709 -> byte code offset #1182
+/* */ // Java source line #712 -> byte code offset #1187
+/* */ // Java source line #713 -> byte code offset #1203
+/* */ // Java source line #714 -> byte code offset #1210
+/* */ // Java source line #718 -> byte code offset #1218
+/* */ // Java source line #711 -> byte code offset #1225
+/* */ // Java source line #712 -> byte code offset #1227
+/* */ // Java source line #713 -> byte code offset #1243
+/* */ // Java source line #714 -> byte code offset #1250
+/* */ // Java source line #718 -> byte code offset #1258
+/* */ // Java source line #719 -> byte code offset #1262
+/* */ // Java source line #712 -> byte code offset #1265
+/* */ // Java source line #713 -> byte code offset #1281
+/* */ // Java source line #714 -> byte code offset #1288
+/* */ // Java source line #718 -> byte code offset #1296
+/* */ // Java source line #720 -> byte code offset #1300
+/* */ // Local variable table:
+/* */ // start length slot name signature
+/* */ // 0 1301 0 this CacheEntry
+/* */ // 1 1095 1 out java.io.FileOutputStream
+/* */ // 3 1118 2 uc URLConnection
+/* */ // 8 172 3 oldRemoteTime long
+/* */ // 1012 116 3 e Exception
+/* */ // 1102 1 4 localIOException IOException
+/* */ // 13 579 5 oldsize int
+/* */ // 19 551 6 oldbytes int
+/* */ // 84 10 7 dirTime long
+/* */ // 448 530 7 tries int
+/* */ // 487 6 8 responseCode int
+/* */ // 673 3 8 in java.io.InputStream
+/* */ // 717 3 8 in java.io.InputStream
+/* */ // 726 74 8 in java.io.InputStream
+/* */ // 220 8 9 in java.io.InputStream
+/* */ // 292 6 9 responseCode int
+/* */ // 490 58 9 keep boolean
+/* */ // 755 28 9 buf byte[]
+/* */ // 295 65 10 keep boolean
+/* */ // 556 8 10 in java.io.InputStream
+/* */ // 760 15 10 count int
+/* */ // 788 3 10 count int
+/* */ // 368 8 11 in java.io.InputStream
+/* */ // 1225 38 12 localObject Object
+/* */ // Exception table:
+/* */ // from to target type
+/* */ // 4 41 1012 java/lang/Exception
+/* */ // 77 125 1012 java/lang/Exception
+/* */ // 161 242 1012 java/lang/Exception
+/* */ // 278 390 1012 java/lang/Exception
+/* */ // 426 606 1012 java/lang/Exception
+/* */ // 642 1009 1012 java/lang/Exception
+/* */ // 1095 1099 1102 java/io/IOException
+/* */ // 4 41 1225 finally
+/* */ // 77 125 1225 finally
+/* */ // 161 242 1225 finally
+/* */ // 278 390 1225 finally
+/* */ // 426 606 1225 finally
+/* */ // 642 1187 1225 finally
+/* */ }
+/* */
+/* */ private void finishedLoad()
+/* */ {
+/* 723 */ notifyObservers();
+/* */
+/* 725 */ synchronized (threadQueue) {
+/* 726 */ numActiveThreads -= 1;
+/* */
+/* */ do
+/* */ {
+/* 730 */ CacheEntry eNext = (CacheEntry)threadQueue.elementAt(0);
+/* 731 */ threadQueue.removeElementAt(0);
+/* 732 */ eNext.startThread();
+/* 729 */ if (numActiveThreads >= MAX_THREADS) break; } while (!threadQueue.isEmpty());
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* 737 */ if ((numActiveThreads <= 0) && (threadQueue.isEmpty()))
+/* */ {
+/* 739 */ Cache.cache.resyncIndex();
+/* */ }
+/* */ }
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\network\CacheEntry.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file