Package freenet.support.api

Examples of freenet.support.api.Bucket


  @Override
  public void run(FCPConnectionHandler handler, Node node) throws MessageInvalidException {
    if (bucket == null) {
      throw new MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "Must contain data", identifier, false);
    }
    Bucket resultBucket;
    try {
      resultBucket = bf.makeBucket(-1);
    } catch (IOException e) {
      Logger.error(this, "Failed to create temporary bucket", e);
      throw new MessageInvalidException(ProtocolErrorMessage.INTERNAL_ERROR, e.toString(), identifier, false);
    }
    String resultCharset = null;
    String resultMimeType = null;
    boolean unsafe = false;
    InputStream input = null;
    OutputStream output = null;
    try {
      input = bucket.getInputStream();
      output = resultBucket.getOutputStream();
      FilterStatus status = applyFilter(input, output, handler.server.core.clientContext);
      resultCharset = status.charset;
      resultMimeType = status.mimeType;
    } catch (UnsafeContentTypeException e) {
      unsafe = true;
View Full Code Here


  @Override
  public CacheFetchResult lookupInstant(FreenetURI key, boolean noFilter, boolean mustCopy, Bucket preferred) {
    ClientGet get = globalRebootClient.getCompletedRequest(key);

    Bucket origData = null;
    String mime = null;
    boolean filtered = false;

    if(get != null && ((!noFilter) || (!(filtered = get.filterData())))) {
      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) {
View Full Code Here

      boolean mustCopy, Bucket preferred) {
    if(globalForeverClient == null) return null;
    ClientGet get = globalForeverClient.getCompletedRequest(key);
    if(get != null) {
      boolean filtered = get.filterData();
      Bucket origData = get.getBucket();
      Bucket newData = null;
      if(!mustCopy)
        newData = origData.createShadow();
      if(newData == null) {
        try {
          if(preferred != null)
View Full Code Here

        if(msg != null) {
          failureCode = msg.code;
          shortFailMessage = msg.getShortFailedMessage();
          longFailMessage = msg.getLongFailedMessage();
        }
        Bucket shadow = ((ClientGet) get).getBucket();
        if(shadow != null) shadow = shadow.createShadow();
        statusCache.finishedDownload(get.identifier, get.hasSucceeded(), ((ClientGet) get).getDataSize(), ((ClientGet) get).getMIMEType(), failureCode, longFailMessage, shortFailMessage, shadow, download.filterData());
      } else if(get instanceof ClientPutBase) {
        ClientPutBase upload = (ClientPutBase)get;
        PutFailedMessage msg = upload.getFailureMessage();
        InsertExceptionMode failureCode = null;
View Full Code Here

      subset.putSingle("Name", e.getName());
      if(tempURI != null) {
        subset.putSingle("UploadFrom", "redirect");
        subset.putSingle("TargetURI", tempURI.toString());
      } else {
        Bucket origData = e.getData();
        Bucket data = origData;
        if(data instanceof DelayedFreeBucket) {
          data = ((DelayedFreeBucket)data).getUnderlying();
        } else if(data instanceof DelayedFreeRandomAccessBucket) {
            data = ((DelayedFreeRandomAccessBucket)data).getUnderlying();
        }
View Full Code Here

  public TextFeedMessage(String header, String shortText, String text, short priorityClass, long updatedTime,
      String sourceNodeName, long composed, long sent, long received,
      String messageText) {
    super(header, shortText, text, priorityClass, updatedTime, sourceNodeName, composed, sent, received);
    final Bucket messageTextBucket;
    try {
      if(messageText != null)
        messageTextBucket = new ArrayBucket(messageText.getBytes("UTF-8"));
      else
        messageTextBucket = new NullBucket();
View Full Code Here

      origHandler.outputHandler.queue(msg);
    else
    client.queueClientRequestMessage(msg, 0);

    freeData();
    Bucket meta;
    synchronized(this) {
      meta = generatedMetadata;
      generatedMetadata = null;
    }
    // FIXME combine the synchronized blocks, null out even if non-persistent.
    if(meta != null) {
      meta.free();
    }
    if(persistence == Persistence.FOREVER) {
      synchronized(this) {
        putFailedMessage = null;
        generatedURI = null;
View Full Code Here

    }

    boolean generated = false;
    FCPMessage msg = null;
    boolean fin = false;
    Bucket meta;
    synchronized (this) {
      generated = generatedURI != null;
      msg = progressMessage;
      fin = finished;
      meta = generatedMetadata;
View Full Code Here

  @Override
  public void readFrom(InputStream is, BucketFactory bf, FCPServer server)
      throws IOException, MessageInvalidException {
    if(initialMetadataLength == 0) return;
    Bucket data;
    data = bf.makeBucket(initialMetadataLength);
    BucketTools.copyFrom(data, is, initialMetadataLength);
    // No need for synchronization here.
    initialMetadata = data;
  }
View Full Code Here

    System.err.println("Starting to fetch plugin "+pluginName);
  }

  @Override
  protected void processSuccess(int build, FetchResult result, File blob) {
    Bucket oldResult = null;
    synchronized(this) {
      if(requiredNodeVersion > Version.buildNumber()) {
        System.err.println("Found version "+fetchedVersion+" of "+pluginName+" but needs node version "+requiredNodeVersion);
        // FIXME deploy it with the main jar
        tempBlobFile.delete();
        return;
      }
      if(this.result != null)
        oldResult = this.result.asBucket();
      this.result = result;
    }
    if(oldResult != null) oldResult.free();
   
    PluginInfoWrapper loaded = pluginManager.getPluginInfo(pluginName);
   
    if(loaded == null) {
      if(!node.pluginManager.isPluginLoadedOrLoadingOrWantLoad(pluginName)) {
View Full Code Here

TOP

Related Classes of freenet.support.api.Bucket

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.