Examples of BulkTransmitter


Examples of freenet.io.xfer.BulkTransmitter

 
  public void handleRequestJar(Message m, final PeerNode source, final boolean isExt) {
    final String name = isExt ? "ext" : "main";
   
    Message msg;
    final BulkTransmitter bt;
    final FileRandomAccessBuffer raf;

    if (source.isOpennet() && updateManager.dontAllowUOM()) {
      Logger.normal(this, "Peer " + source
          + " asked us for the blob file for " + name
          + "; We are a seenode, so we ignore it!");
      return;
    }
    // Do we have the data?

    int version = isExt ? NodeUpdateManager.TRANSITION_VERSION_EXT : NodeUpdateManager.TRANSITION_VERSION;
    File data = isExt ? updateManager.getTransitionExtBlob() : updateManager.getTransitionMainBlob();

    if(data == null) {
      Logger.normal(this, "Peer " + source + " asked us for the blob file for the "+name+" jar but we don't have it!");
      // Probably a race condition on reconnect, hopefully we'll be asked again
      return;
    }

    final long uid = m.getLong(DMT.UID);

    if(!source.sendingUOMJar(isExt)) {
      Logger.error(this, "Peer "+source+" asked for UOM "+(isExt?"ext":"main")+" jar twice");
      return;
    }
   
    try {
     
      try {
        raf = new FileRandomAccessBuffer(data, true);
      } catch(FileNotFoundException e) {
        Logger.error(this, "Peer " + source + " asked us for the blob file for the "+name+" jar, we have downloaded it but don't have the file even though we did have it when we checked!: " + e, e);
        return;
      } catch(IOException e) {
          Logger.error(this, "Peer " + source + " asked us for the blob file for the "+name+" jar, we have downloaded it but can't read the file on disk!: " + e, e);
          return;
      }
     
      final PartiallyReceivedBulk prb;
      long length;
      length = raf.size();
      prb = new PartiallyReceivedBulk(updateManager.node.getUSM(), length,
              Node.PACKET_SIZE, raf, true);
     
      try {
        bt = new BulkTransmitter(prb, source, uid, false, updateManager.ctr, true);
      } catch(DisconnectedException e) {
        Logger.error(this, "Peer " + source + " asked us for the blob file for the "+name+" jar, then disconnected: " + e, e);
        raf.close();
        return;
      }
     
      msg =
        isExt ? DMT.createUOMSendingExtra(uid, length, NodeUpdateManager.transitionExtJarURIAsUSK.toString(), version) :
          DMT.createUOMSendingMain(uid, length, NodeUpdateManager.transitionMainJarURIAsUSK.toString(), version);
     
    } catch (RuntimeException e) {
      source.finishedSendingUOMJar(isExt);
      throw e;
    } catch (Error e) {
      source.finishedSendingUOMJar(isExt);
      throw e;
    }
   
    final Runnable r = new Runnable() {

      @Override
      public void run() {
        try {
          if(!bt.send())
            Logger.error(this, "Failed to send "+name+" jar blob to " + source.userToString() + " : " + bt.getCancelReason());
          else
            Logger.normal(this, "Sent "+name+" jar blob to " + source.userToString());
          raf.close();
        } catch (DisconnectedException e) {
          // Not much we can do.
View Full Code Here

Examples of freenet.io.xfer.BulkTransmitter

    ByteArrayRandomAccessBuffer raf = new ByteArrayRandomAccessBuffer(padded);
    raf.setReadOnly();
    PartiallyReceivedBulk prb =
      new PartiallyReceivedBulk(node.usm, padded.length, Node.PACKET_SIZE, raf, true);
    try {
      BulkTransmitter bt =
        new BulkTransmitter(prb, peer, xferUID, true, ctr, true, cb);
      return bt.send();
    } catch (DisconnectedException e) {
      throw new NotConnectedException(e);
    }
  }
View Full Code Here

Examples of freenet.io.xfer.BulkTransmitter

        synchronized(this) {
          sendingFullNoderef = false;
        }
        return;
      }
      final BulkTransmitter bt;
      try {
        bt = new BulkTransmitter(prb, this, uid, false, node.nodeStats.foafCounter, false);
      } catch (DisconnectedException e) {
        synchronized(this) {
          sendingFullNoderef = false;
        }
        return;
      }
      node.executor.execute(new Runnable() {

        @Override
        public void run() {
          try {
            bt.send();
          } catch (DisconnectedException e) {
            // :|
          } finally {
            synchronized(DarknetPeerNode.this) {
              sendingFullNoderef = false;
View Full Code Here

Examples of freenet.io.xfer.BulkTransmitter

      data.close();
    }

    public void send() throws DisconnectedException {
      prb = new PartiallyReceivedBulk(node.usm, size, Node.PACKET_SIZE, data, true);
      transmitter = new BulkTransmitter(prb, DarknetPeerNode.this, uid, false, node.nodeStats.nodeToNodeCounter, false);
      if(logMINOR)
        Logger.minor(this, "Sending "+uid);
      node.executor.execute(new Runnable() {
        @Override
        public void run() {
View Full Code Here

Examples of freenet.io.xfer.BulkTransmitter

    long length;
    length = data.size();
    prb = new PartiallyReceivedBulk(updateManager.node.getUSM(), length,
            Node.PACKET_SIZE, data, true);

    final BulkTransmitter bt;
    try {
      bt = new BulkTransmitter(prb, source, uid, false, updateManager.ctr, true);
    } catch(DisconnectedException e) {
      Logger.error(this, "Peer " + source + " asked us for the blob file for the revocation key, then disconnected: " + e, e);
      data.close();
      return true;
    }

    final Runnable r = new Runnable() {

      @Override
      public void run() {
        try {
          if(!bt.send())
            Logger.error(this, "Failed to send revocation key blob to " + source.userToString() + " : " + bt.getCancelReason());
          else
            Logger.normal(this, "Sent revocation key blob to " + source.userToString());
        } catch (DisconnectedException e) {
          // Not much we can do here either.
          Logger.warning(this, "Failed to send revocation key blob (disconnected) to " + source.userToString() + " : " + bt.getCancelReason());
        } finally {
          data.close();
        }
      }
    };
View Full Code Here

Examples of freenet.io.xfer.BulkTransmitter

  public void handleRequestJar(Message m, final PeerNode source) {
    final String name = "main";
   
    Message msg;
    final BulkTransmitter bt;
    final FileRandomAccessBuffer raf;

    if (source.isOpennet() && updateManager.dontAllowUOM()) {
      Logger.normal(this, "Peer " + source
          + " asked us for the blob file for " + name
          + "; We are a seenode, so we ignore it!");
      return;
    }
    // Do we have the data?

    File data = updateManager.getCurrentVersionBlobFile();
    int version = Version.buildNumber();
   
    if(version != Version.buildNumber()) {
      Logger.normal(this, "Peer " + source + " asked us for the blob file for the main jar but we are about to update...");
      // Race condition?
      return;
     
    }

    if(data == null) {
      Logger.normal(this, "Peer " + source + " asked us for the blob file for the "+name+" jar but we don't have it!");
      // Probably a race condition on reconnect, hopefully we'll be asked again
      return;
    }

    final long uid = m.getLong(DMT.UID);

    if(!source.sendingUOMJar(false)) {
      Logger.error(this, "Peer "+source+" asked for UOM main jar twice");
      return;
    }
   
    try {
     
      try {
        raf = new FileRandomAccessBuffer(data, true);
      } catch(FileNotFoundException e) {
        Logger.error(this, "Peer " + source + " asked us for the blob file for the "+name+" jar, we have downloaded it but don't have the file even though we did have it when we checked!: " + e, e);
        return;
            } catch(IOException e) {
                Logger.error(this, "Peer " + source + " asked us for the blob file for the "+name+" jar, we have downloaded it but can't read the file due to a disk I/O error: " + e, e);
                return;
      }
     
      final PartiallyReceivedBulk prb;
      long length;
      length = raf.size();
      prb = new PartiallyReceivedBulk(updateManager.node.getUSM(), length,
              Node.PACKET_SIZE, raf, true);
     
      try {
        bt = new BulkTransmitter(prb, source, uid, false, updateManager.ctr, true);
      } catch(DisconnectedException e) {
        Logger.error(this, "Peer " + source + " asked us for the blob file for the "+name+" jar, then disconnected: " + e, e);
        raf.close();
        return;
      }
     
      msg =
        DMT.createUOMSendingMainJar(uid, length, updateManager.getURI().toString(), version);
     
    } catch (RuntimeException e) {
      source.finishedSendingUOMJar(false);
      throw e;
    } catch (Error e) {
      source.finishedSendingUOMJar(false);
      throw e;
    }
   
    final Runnable r = new Runnable() {

      @Override
      public void run() {
        try {
          if(!bt.send())
            Logger.error(this, "Failed to send "+name+" jar blob to " + source.userToString() + " : " + bt.getCancelReason());
          else
            Logger.normal(this, "Sent "+name+" jar blob to " + source.userToString());
          raf.close();
        } catch (DisconnectedException e) {
          // Not much we can do.
View Full Code Here

Examples of freenet.io.xfer.BulkTransmitter

    synchronized(dependencies) {
      data = dependencies.get(buf);
    }
    boolean fail = !incrementDependencies(source);
    FileRandomAccessBuffer raf;
    final BulkTransmitter bt;
   
    try {
      if(data != null)
        raf = new FileRandomAccessBuffer(data, true);
      else {
        Logger.error(this, "Dependency with hash "+HexUtil.bytesToHex(buf.getData())+" not found!");
        fail = true;
        raf = null;
      }
    } catch(IOException e) {
      Logger.error(this, "Peer " + source + " asked us for the dependency with hash "+HexUtil.bytesToHex(buf.getData())+" jar, we have downloaded it but " +
              (e instanceof FileNotFoundException ? "don't have the file" : "can't read the file")+
              " even though we did have it when we checked!: " + e, e);
      raf = null;
      fail = true;
    }
   
    PartiallyReceivedBulk prb;
    if(raf != null) {
        long thisLength = raf.size();
        prb = new PartiallyReceivedBulk(updateManager.node.getUSM(), thisLength,
                Node.PACKET_SIZE, raf, true);
        if(length != thisLength) {
            fail = true;
        }
    } else {
        prb = new PartiallyReceivedBulk(updateManager.node.getUSM(), 0,
                Node.PACKET_SIZE, new ByteArrayRandomAccessBuffer(new byte[0]), true);
        fail = true;
    }
   
    try {
      bt = new BulkTransmitter(prb, source, uid, false, updateManager.ctr, true);
    } catch(DisconnectedException e) {
      Logger.error(this, "Peer " + source + " asked us for the dependency with hash "+HexUtil.bytesToHex(buf.getData())+" jar then disconnected", e);
      raf.close();
      decrementDependencies(source);
      return;
    }
   
    if(fail) {
      cancelSend(source, uid);
      decrementDependencies(source);
    } else {
      final FileRandomAccessBuffer r = raf;
      updateManager.node.executor.execute(new Runnable() {
       
        @Override
        public void run() {
          source.incrementUOMSends();
          try {
            bt.send();
          } catch (DisconnectedException e) {
            Logger.normal(this, "Disconnected while sending dependency with hash "+HexUtil.bytesToHex(buf.getData())+" to "+source);
          } finally {
            source.decrementUOMSends();
            decrementDependencies(source);
View Full Code Here
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.