Package freenet.support.io

Examples of freenet.support.io.ArrayBucket


    }
   
    /** Check whether we can close the stream early.
     * @throws IOException */
    public void testCloseEarly() throws IOException {
        ArrayBucket input = new ArrayBucket();
        BucketTools.fill(input, 2048);
        int keysize = 16;
        Random random = new Random(0x47f6709f);
        byte[] key = new byte[keysize];
        random.nextBytes(key);
        Bucket output = new ArrayBucket();
        OutputStream os = output.getOutputStream();
        AEADOutputStream cos = AEADOutputStream.innerCreateAES(os, key, random);
        BucketTools.copyTo(input, cos, 2048);
        cos.close();
        InputStream is = output.getInputStream();
        AEADInputStream cis = AEADInputStream.createAES(is, key);
        byte[] first1KReadEncrypted = new byte[1024];
        new DataInputStream(cis).readFully(first1KReadEncrypted);
        byte[] first1KReadOriginal = new byte[1024];
        new DataInputStream(input.getInputStream()).readFully(first1KReadOriginal);
View Full Code Here


   
    /** If we close the stream early but there is garbage after that point, it should throw on
     * close().
     * @throws IOException */
    public void testGarbageAfterClose() throws IOException {
        ArrayBucket input = new ArrayBucket();
        BucketTools.fill(input, 1024);
        int keysize = 16;
        Random random = new Random(0x47f6709f);
        byte[] key = new byte[keysize];
        random.nextBytes(key);
        Bucket output = new ArrayBucket();
        OutputStream os = output.getOutputStream();
        AEADOutputStream cos = AEADOutputStream.innerCreateAES(new NoCloseProxyOutputStream(os), key, random);
        BucketTools.copyTo(input, cos, -1);
        cos.close();
        // Now write garbage.
        FileUtil.fill(os, 1024);
        os.close();
        InputStream is = output.getInputStream();
        AEADInputStream cis = AEADInputStream.createAES(is, key);
        byte[] first1KReadEncrypted = new byte[1024];
        new DataInputStream(cis).readFully(first1KReadEncrypted);
        byte[] first1KReadOriginal = new byte[1024];
        new DataInputStream(input.getInputStream()).readFully(first1KReadOriginal);
View Full Code Here

        }
        raf.pwrite(offsetOverallStatus, buf, 0, buf.length);
    }

    private byte[] encodeOverallStatus() {
        ArrayBucket bucket = new ArrayBucket(); // Will be small.
        try {
            OutputStream os = bucket.getOutputStream();
            OutputStream cos = checker.checksumWriterWithLength(os, new ArrayBucketFactory());
            DataOutputStream dos = new DataOutputStream(cos);
            synchronized(this) {
                errors.writeFixedLengthTo(dos);
                overallStatusDirty = false;
            }
            dos.close();
            os.close();
            return bucket.toByteArray();
        } catch (IOException e) {
            throw new Error(e); // Impossible
        }
    }
View Full Code Here

            throw new Error(e); // Impossible
        }
    }

    private Bucket encodeSegmentSettings() {
        ArrayBucket bucket = new ArrayBucket(); // Will be small.
        try {
            OutputStream os = bucket.getOutputStream();
            OutputStream cos = checker.checksumWriterWithLength(os, new ArrayBucketFactory());
            DataOutputStream dos = new DataOutputStream(cos);
            for (SplitFileInserterSegmentStorage segment : segments) {
                segment.writeFixedSettings(dos);
            }
View Full Code Here

    }else if(uline.startsWith("FILTER:")) {
      line = line.substring("FILTER:".length()).trim();
      outsb.append("Here is the result:\r\n");
     
      final String content = readLines(reader, false);
      final Bucket input = new ArrayBucket(content.getBytes("UTF-8"));
      final Bucket output = new ArrayBucket();
      InputStream inputStream = null;
      OutputStream outputStream = null;
      InputStream bis = null;
      try {
        inputStream = input.getInputStream();
        outputStream = output.getOutputStream();
        ContentFilter.filter(inputStream, outputStream, "text/html", new URI("http://127.0.0.1:8888/"), null, null, null, core.getLinkFilterExceptionProvider());
        inputStream.close();
      inputStream = null;
        outputStream.close();
      outputStream = null;

        bis = output.getInputStream();
        while(bis.available() > 0){
          outsb.append((char)bis.read());
        }
      } catch (IOException e) {
        outsb.append("Bucket error?: " + e.getMessage());
        Logger.error(this, "Bucket error?: " + e, e);
      } catch (URISyntaxException e) {
        outsb.append("Internal error: " + e.getMessage());
        Logger.error(this, "Internal error: " + e, e);
      } finally {
      Closer.close(inputStream);
      Closer.close(outputStream);
      Closer.close(bis);
        input.free();
        output.free();
      }
      outsb.append("\r\n");
    }else if(uline.startsWith("BLOW")) {
      n.getNodeUpdater().blow("caught an  IOException : (Incompetent Operator) :p", true);
      outsb.append("\r\n");
      w.write(outsb.toString());
      w.flush();
      return false;
  } else if(uline.startsWith("SHUTDOWN")) {
    StringBuilder sb = new StringBuilder();
    sb.append("Shutting node down.\r\n");
    w.write(sb.toString());
    w.flush();
    n.exit("Shutdown from console");
  } else if(uline.startsWith("RESTART")) {
    StringBuilder sb = new StringBuilder();
    sb.append("Restarting the node.\r\n");
    w.write(sb.toString());
    w.flush();
    n.getNodeStarter().restart();
  } else if(uline.startsWith("QUIT") && (core.directTMCI == this)) {
    StringBuilder sb = new StringBuilder();
    sb.append("QUIT command not available in console mode.\r\n");
    w.write(sb.toString());
    w.flush();
    return false;
        } else if(uline.startsWith("QUIT")) {
    StringBuilder sb = new StringBuilder();
    sb.append("Closing connection.\r\n");
    w.write(sb.toString());
    w.flush();
    return true;
        } else if(uline.startsWith("MEMSTAT")) {
    Runtime rt = Runtime.getRuntime();
    float freeMemory = rt.freeMemory();
    float totalMemory = rt.totalMemory();
    float maxMemory = rt.maxMemory();

    long usedJavaMem = (long)(totalMemory - freeMemory);
    long allocatedJavaMem = (long)totalMemory;
    long maxJavaMem = (long)maxMemory;
    int availableCpus = rt.availableProcessors();
    NumberFormat thousendPoint = NumberFormat.getInstance();

    ThreadGroup tg = Thread.currentThread().getThreadGroup();
    while(tg.getParent() != null) tg = tg.getParent();
    int threadCount = tg.activeCount();

    StringBuilder sb = new StringBuilder();
    sb.append("Used Java memory:\u00a0" + SizeUtil.formatSize(usedJavaMem, true)+"\r\n");
    sb.append("Allocated Java memory:\u00a0" + SizeUtil.formatSize(allocatedJavaMem, true)+"\r\n");
    sb.append("Maximum Java memory:\u00a0" + SizeUtil.formatSize(maxJavaMem, true)+"\r\n");
    sb.append("Running threads:\u00a0" + thousendPoint.format(threadCount)+"\r\n");
    sb.append("Available CPUs:\u00a0" + availableCpus+"\r\n");
    sb.append("Java Version:\u00a0" + System.getProperty("java.version")+"\r\n");
    sb.append("JVM Vendor:\u00a0" + System.getProperty("java.vendor")+"\r\n");
    sb.append("JVM Version:\u00a0" + System.getProperty("java.version")+"\r\n");
    sb.append("OS Name:\u00a0" + System.getProperty("os.name")+"\r\n");
    sb.append("OS Version:\u00a0" + System.getProperty("os.version")+"\r\n");
    sb.append("OS Architecture:\u00a0" + System.getProperty("os.arch")+"\r\n");
    w.write(sb.toString());
    w.flush();
    return false;
  } else if(uline.startsWith("HELP")) {
    printHeader(w);
    outsb.append("\r\n");
    w.write(outsb.toString());
    w.flush();
    return false;
        } else if(uline.startsWith("PUT:") || (getCHKOnly = uline.startsWith("GETCHK:"))) {
          if(getCHKOnly)
            line = line.substring(("GETCHK:").length()).trim();
          else
            line = line.substring("PUT:".length()).trim();
            String content;
            if(line.length() > 0) {
                // Single line insert
                content = line;
            } else {
                // Multiple line insert
                content = readLines(reader, false);
            }
            // Insert
            byte[] data = content.getBytes(ENCODING);
           
            InsertBlock block = new InsertBlock(new ArrayBucket(data), null, FreenetURI.EMPTY_CHK_URI);

            FreenetURI uri;
            try {
              uri = client.insert(block, getCHKOnly, null);
            } catch (InsertException e) {
View Full Code Here

    // If it is too big, we get a TOO_BIG. This is fatal so we will blow, which is the right thing as it means the top block is valid.
    tempContext.maxOutputLength = NodeUpdateManager.MAX_REVOCATION_KEY_LENGTH;
    tempContext.maxTempLength = NodeUpdateManager.MAX_REVOCATION_KEY_TEMP_LENGTH;
    tempContext.localRequestOnly = true;

    final ArrayBucket cleanedBlob = new ArrayBucket();

    ClientGetCallback myCallback = new ClientGetCallback() {

      @Override
      public void onFailure(FetchException e, ClientGetter state) {
        if(e.mode == FetchExceptionMode.CANCELLED) {
          // Eh?
          Logger.error(this, "Cancelled fetch from store/blob of revocation certificate from " + source);
          System.err.println("Cancelled fetch from store/blob of revocation certificate from " + source + " to " + temp + " - please report to developers");
        // Probably best to keep files around for now.
        } else if(e.isFatal()) {
          // Blown: somebody inserted a revocation message, but it was corrupt as inserted
          // However it had valid signatures etc.

          System.err.println("Got revocation certificate from " + source + " (fatal error i.e. someone with the key inserted bad data) : "+e);
          // Blow the update, and propagate the revocation certificate.
          updateManager.revocationChecker.onFailure(e, state, cleanedBlob);
          // Don't delete it if it's from disk, as it's already in the right place.
          if(!fromDisk)
            temp.free();

          insertBlob(updateManager.revocationChecker.getBlobBucket(), "revocation");
        } else {
          String message = "Failed to fetch revocation certificate from blob from " +
            source + " : "+e+
            (fromDisk ? " : did you change the revocation key?" :
              " : this is almost certainly bogus i.e. the auto-update is fine but the node is broken.");
          Logger.error(this, message);
          System.err.println(message);
          // This is almost certainly bogus.
          // Delete it, even if it's fromDisk.
          temp.free();
          cleanedBlob.free();
        }
      }

      @Override
      public void onSuccess(FetchResult result, ClientGetter state) {
View Full Code Here

  public void insertImage(TemporaryImage temporaryImage, Image image, InsertToken insertToken) throws SoneException {
    String filenameHint = image.getId() + "." + temporaryImage.getMimeType().substring(temporaryImage.getMimeType().lastIndexOf("/") + 1);
    InsertableClientSSK key = InsertableClientSSK.createRandom(node.random, "");
    FreenetURI targetUri = key.getInsertURI().setDocName(filenameHint);
    InsertContext insertContext = client.getInsertContext(true);
    Bucket bucket = new ArrayBucket(temporaryImage.getImageData());
    ClientMetadata metadata = new ClientMetadata(temporaryImage.getMimeType());
    InsertBlock insertBlock = new InsertBlock(bucket, metadata, targetUri);
    try {
      ClientPutter clientPutter = client.insert(insertBlock, false, null, false, insertContext, insertToken, RequestStarter.INTERACTIVE_PRIORITY_CLASS);
      insertToken.setClientPutter(clientPutter);
View Full Code Here

TOP

Related Classes of freenet.support.io.ArrayBucket

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.