Package com.torrent4j.util

Examples of com.torrent4j.util.Hash


        ((PeerWireFrameDecoder) e.getChannel().getPipeline()
            .get("frame-decoder")).setHandshaked(true);
        ((PeerWireMessageDecoder) e.getChannel().getPipeline()
            .get("message-decoder")).setHandshaked(true);

        final Hash hash = new Hash(HashType.SHA1, message.torrentHash);
        final Torrent torrent = controller.findTorrent(hash);

        if (torrent == null) {
          e.getChannel().disconnect();
          return;
        }

        TorrentPeer peer = torrent.getSwarm().findPeer(
            (InetSocketAddress) e.getChannel().getRemoteAddress(),
            message.peerID);
        if (peer == null) {
          peer = new TorrentPeer(torrent);
          peer.setAddress((InetSocketAddress) e.getChannel()
              .getRemoteAddress());
        }
        peer.setPeerID(message.peerID);
       
        this.peer = (PeerWireProtocolPeer) peer.getProtocolPeer();

        e.getChannel().getPipeline()
            .get(PeerTrafficShapingHandler.class).setPeer(peer);
        e.getChannel().getPipeline()
            .get(TorrentTrafficShapingHandler.class)
            .setTorrent(torrent);

        peer.resetState();
        this.peer.getStrategy().getPeerStrategy()
            .peerConnected(torrent, peer);
      } else if (msg instanceof HaveMessage) {
        peer.getTorrentPeer()
            .getPieces()
            .addPiece(
                peer.getTorrent().getPiece(
                    ((HaveMessage) msg).pieceIndex));
        peer.getStrategy()
            .getPeerStrategy()
            .havePiece(
                peer.getTorrent(),
                peer.getTorrentPeer(),
                peer.getTorrent().getPiece(
                    ((HaveMessage) msg).pieceIndex));
      } else if (msg instanceof UnchokeMessage) {
        peer.getTorrentPeer().getState()
            .setRemoteChoked(TorrentPeerChoking.UNCHOKED);
        peer.getStrategy().getPeerStrategy()
            .unchoked(peer.getTorrent(), peer.getTorrentPeer());
      } else if (msg instanceof ChokeMessage) {
        peer.getTorrentPeer().getState()
            .setRemoteChoked(TorrentPeerChoking.CHOKED);
        peer.getStrategy().getPeerStrategy()
            .choked(peer.getTorrent(), peer.getTorrentPeer());
      } else if (msg instanceof InterestedMessage) {
        peer.getTorrentPeer().getState()
            .setRemoteInterest(TorrentPeerInterest.INTERESTED);
        peer.getStrategy().getPeerStrategy()
            .interested(peer.getTorrent(), peer.getTorrentPeer());
      } else if (msg instanceof NotInterestedMessage) {
        peer.getTorrentPeer().getState()
            .setRemoteInterest(TorrentPeerInterest.NOT_INTERESTED);
        peer.getStrategy()
            .getPeerStrategy()
            .notInterested(peer.getTorrent(), peer.getTorrentPeer());
      } else if (msg instanceof BitFieldMessage) {
        peer.getTorrentPeer().getPieces()
            .load(((BitFieldMessage) msg).bitSet);
        peer.getStrategy().getPeerStrategy()
            .bitField(peer.getTorrent(), peer.getTorrentPeer());
      } else if (msg instanceof RequestMessage) {
        final RequestMessage message = (RequestMessage) msg;

        final TorrentPiece piece = peer.getTorrent().getPiece(
            message.pieceIndex);
        final TorrentPieceBlock block = piece.getBlock(message.begin,
            message.length);
       
        if(peer.getTorrentPeer().getState().hasUploadRequestedBlock()) {
          peer.disconnect();
          return;
        }

        peer.getTorrentPeer().getState().setUploadRequestedBlock(block);
        peer.getTorrentPeer().getState()
            .setUploadRequestedDate(new Date());

        peer.getStrategy()
            .getUploadStrategy()
            .blockRequested(peer.getTorrent(), block,
                peer.getTorrentPeer());
      } else if (msg instanceof CancelMessage) {
        final CancelMessage message = (CancelMessage) msg;

        final TorrentPiece piece = peer.getTorrent().getPiece(
            message.pieceIndex);
        final TorrentPieceBlock block = piece.getBlock(message.begin,
            message.length);

        peer.getTorrentPeer().getState().setUploadRequestedBlock(null);
        peer.getTorrentPeer().getState().setUploadRequestedDate(null);

        peer.getStrategy()
            .getUploadStrategy()
            .blockRequestCancelled(peer.getTorrent(), block,
                peer.getTorrentPeer());
      } else if (msg instanceof BlockMessage) {
        final BlockMessage message = (BlockMessage) msg;

        final TorrentPiece piece = peer.getTorrent().getPiece(
            message.pieceIndex);
        final TorrentPieceBlock block = piece.getBlock(message.begin,
            message.data.remaining());

        peer.getTorrentPeer().getState().setLastDownloadedBlock(block);
        peer.getTorrentPeer().getState()
            .setLastDownloadedBlockDate(new Date());

        peer.getTorrentPeer().getState()
            .setDownloadRequestedBlock(null);
        peer.getTorrentPeer().getState().setDownloadRequestedDate(null);

        controller.getStorage().write(piece.getTorrent(),
            block.getTorrentRange(), message.data);
        block.setDownloaded(true);
        if (piece.isDownloaded()) {
          final Hash pieceHash = controller.getStorage().checksum(
              piece);
          if (!piece.getHash().equals(pieceHash)) {
            piece.getTorrent()
                .getStrategy()
                .getDownloadStrategy()
View Full Code Here


   * @throws IOException
   *             if any IO error occur
   */
  public void checkExistingData(Torrent torrent) throws IOException {
    for (final TorrentPiece piece : torrent.getPieces()) {
      final Hash hash = storage.checksum(piece);
      if (!piece.getHash().equals(hash))
        continue;
      torrent.getCompletedPieces().addPiece(piece);
    }
  }
View Full Code Here

  public Hash checksum(TorrentPiece piece) throws IOException {
    final ByteBuffer buffer = read(piece.getTorrent(),
        piece.getTorrentRange());
    if (buffer == null)
      return null;
    return new Hash(piece.getHash().getType(), piece.getHash().getType()
        .hash(buffer));
  }
View Full Code Here

TOP

Related Classes of com.torrent4j.util.Hash

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.