Package freenet.client.async

Source Code of freenet.client.async.USKProxyCompletionCallback

/* This code is part of Freenet. It is distributed under the GNU General
* Public License, version 2 (or at your option any later version). See
* http://www.gnu.org/ for further details of the GPL. */
package freenet.client.async;

import java.io.Serializable;
import java.util.List;

import freenet.client.ClientMetadata;
import freenet.client.FetchException;
import freenet.client.FetchException.FetchExceptionMode;
import freenet.client.InsertContext.CompatibilityMode;
import freenet.crypt.HashResult;
import freenet.keys.FreenetURI;
import freenet.keys.USK;
import freenet.support.compress.Compressor;

/**
* Passes everything through, except that is updates the lastKnownGood on the USKManager,
* and has some code to handle new URIs.
* @author toad
*
*/
public class USKProxyCompletionCallback implements GetCompletionCallback, Serializable {

    private static final long serialVersionUID = 1L;
    final USK usk;
  final GetCompletionCallback cb;
  final boolean persistent;
 
  public USKProxyCompletionCallback(USK usk, GetCompletionCallback cb, boolean persistent) {
    this.usk = usk;
    this.cb = cb;
    this.persistent = persistent;
  }

  @Override
  public void onSuccess(StreamGenerator streamGenerator, ClientMetadata clientMetadata, List<? extends Compressor> decompressors, ClientGetState state, ClientContext context) {
    context.uskManager.updateKnownGood(usk, usk.suggestedEdition, context);
    cb.onSuccess(streamGenerator, clientMetadata, decompressors, state, context);
  }

  @Override
  public void onFailure(FetchException e, ClientGetState state, ClientContext context) {
    switch(e.mode) {
    case NOT_ENOUGH_PATH_COMPONENTS:
    case PERMANENT_REDIRECT:
      context.uskManager.updateKnownGood(usk, usk.suggestedEdition, context);
    }
    FreenetURI uri = e.newURI;
    if(uri != null) {
      // FIXME what are we doing here anyway? Document!
      uri = usk.turnMySSKIntoUSK(uri);
      e = new FetchException(e, uri);
    }
    cb.onFailure(e, state, context);
  }

  @Override
  public void onBlockSetFinished(ClientGetState state, ClientContext context) {
    cb.onBlockSetFinished(state, context);
  }

  @Override
  public void onTransition(ClientGetState oldState, ClientGetState newState, ClientContext context) {
    // Ignore
  }

  @Override
  public void onExpectedMIME(ClientMetadata metadata, ClientContext context) throws FetchException {
    cb.onExpectedMIME(metadata, context);
  }

  @Override
  public void onExpectedSize(long size, ClientContext context) {
    cb.onExpectedSize(size, context);
  }

  @Override
  public void onFinalizedMetadata() {
    cb.onFinalizedMetadata();
  }

  @Override
  public void onExpectedTopSize(long size, long compressed, int blocksReq, int blocksTotal, ClientContext context) {
    cb.onExpectedTopSize(size, compressed, blocksReq, blocksTotal, context);
  }

  @Override
  public void onSplitfileCompatibilityMode(CompatibilityMode min, CompatibilityMode max, byte[] splitfileKey, boolean dontCompress, boolean bottomLayer, boolean definitiveAnyway, ClientContext context) {
    cb.onSplitfileCompatibilityMode(min, max, splitfileKey, dontCompress, bottomLayer, definitiveAnyway, context);
  }

  @Override
  public void onHashes(HashResult[] hashes, ClientContext context) {
    cb.onHashes(hashes, context);
  }

}
TOP

Related Classes of freenet.client.async.USKProxyCompletionCallback

TOP
Copyright © 2018 www.massapi.com. 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.