Package freenet.client.async

Examples of freenet.client.async.CacheFetchResult


      if(data == null) continue;
      if(data.size() == 0) continue;
      if(noFilter && download.filterData) continue;
      // FIXME it probably *is* worth the effort to allow this when it is overridden on the fetcher, since the user changed the type???
      if(download.overriddenDataType) continue;
      return new CacheFetchResult(new ClientMetadata(download.getMIMEType()), new NoFreeBucket(data), download.filterData);
    }
    return null;
  }
View Full Code Here


      origData = new NoFreeBucket(get.getBucket());
      mime = get.getMIMEType();
    }

    if(origData == null && globalForeverClient != null) {
      CacheFetchResult result = globalForeverClient.getRequestStatusCache().getShadowBucket(key, noFilter);
      if(result != null) {
        mime = result.getMimeType();
        origData = result.asBucket();
        filtered = result.alreadyFiltered;
      }
    }

    if(origData == null) return null;

    if(!mustCopy)
      return new CacheFetchResult(new ClientMetadata(mime), origData, filtered);

    Bucket newData = null;
    try {
      if(preferred != null) newData = preferred;
      else newData = core.tempBucketFactory.makeBucket(origData.size());
      BucketTools.copy(origData, newData);
      if(origData.size() != newData.size()) {
        Logger.normal(this, "Maybe it disappeared under us?");
        newData.free();
        newData = null;
        return null;
      }
      return new CacheFetchResult(new ClientMetadata(mime), newData, filtered);
    } catch (IOException e) {
      // Maybe it was freed?
      Logger.normal(this, "Unable to copy data: "+e, e);
      return null;
    }
View Full Code Here

        } catch (IOException e) {
          Logger.error(this, "Unable to copy data: "+e, e);
          return null;
        }
      }
      return new CacheFetchResult(new ClientMetadata(get.getMIMEType()), newData, filtered);
    }
    return null;
  }
View Full Code Here

  /** Look up the key in the downloads queue.
   * @return True if it was found and we don't need to start the request. */
  private boolean checkCache(ClientContext context) {
    // Fproxy uses lookupInstant() with mustCopy = false. I.e. it can reuse stuff unsafely. If the user frees it it's their fault.
    if(bogusUSK(context)) return false;
    CacheFetchResult result = context.downloadCache == null ? null : context.downloadCache.lookupInstant(uri, !fctx.filterData, false, null);
    if(result == null) return false;
    Bucket data = null;
    String mimeType = null;
    if((!fctx.filterData) && (!result.alreadyFiltered)) {
      if(fctx.overrideMIME == null || fctx.overrideMIME.equals(result.getMimeType())) {
        // Works as-is.
        // Any time we re-use old content we need to remove the tracker because it may not remain available.
        tracker.removeFetcher(this);
        onSuccess(result, null);
        return true;
      } else if(fctx.overrideMIME != null && !fctx.overrideMIME.equals(result.getMimeType())) {
        // Change the MIME type.
        tracker.removeFetcher(this);
        onSuccess(new FetchResult(new ClientMetadata(fctx.overrideMIME), result.asBucket()), null);
        return true;
      }
    } else if(result.alreadyFiltered) {
      if(refilterPolicy == REFILTER_POLICY.RE_FETCH || !fctx.filterData) {
        // Can't use it.
        return false;
      } else if(fctx.filterData) {
        if(shouldAcceptCachedFilteredData(fctx, result)) {
          if(refilterPolicy == REFILTER_POLICY.ACCEPT_OLD) {
            tracker.removeFetcher(this);
            onSuccess(result, null);
            return true;
          } // else re-filter
        } else
          return false;
      } else {
        return false;
      }
    }
    data = result.asBucket();
    mimeType = result.getMimeType();
    if(mimeType == null || mimeType.equals("")) mimeType = DefaultMIMETypes.DEFAULT_MIME_TYPE;
    if(fctx.overrideMIME != null && !result.alreadyFiltered)
      mimeType = fctx.overrideMIME;
    else if(fctx.overrideMIME != null && !mimeType.equals(fctx.overrideMIME)) {
      // Doesn't work.
View Full Code Here

TOP

Related Classes of freenet.client.async.CacheFetchResult

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.