public void Setup()
        {
            writtenData = new List <Tuple <long, byte[]> >();

            Sha1Hash hash;

            using (var sha1 = SHA1.Create())
                hash = new Sha1Hash(sha1.ComputeHash(Enumerable.Repeat((byte)0, 50).ToArray()));

            var metainfo = new Metainfo("test",
                                        Sha1Hash.Empty,
                                        new[]
            {
                new ContainedFile("File1.txt", 100),
            },
                                        new[]
            {
                new Piece(0, 50, hash),
                new Piece(50, 50, hash),
            },
                                        new IEnumerable <Uri> [0],
                                        new byte[0]);

            var baseHandler = new Mock <IBlockDataHandler>();

            baseHandler.Setup(x => x.Metainfo)
            .Returns(metainfo);
            baseHandler.Setup(x => x.WriteBlockData(It.IsAny <long>(),
                                                    It.IsAny <byte[]>()))
            .Callback <long, byte[]>((offset, data) => writtenData.Add(Tuple.Create(offset, data)));

            pieceChecker = new PieceCheckerHandler(baseHandler.Object);
        }
Ejemplo n.º 2
0
        internal TorrentDownload Add(Metainfo metainfo, ITracker tracker, IFileHandler fileHandler)
        {
            var dataHandler = new PieceCheckerHandler(new BlockDataHandler(fileHandler, metainfo));
            var bitTorrentApplicationProtocol = new BitTorrentApplicationProtocol <BitTorrentPeerInitiator.IContext>(LocalPeerId, metainfo, peerInitiator, m => new QueueingMessageHandler(mainLoop, m), moduleManager, dataHandler);
            var downloadManager = new TorrentDownloadManager(LocalPeerId,
                                                             mainLoop,
                                                             bitTorrentApplicationProtocol,
                                                             tracker,
                                                             metainfo);

            var download = new TorrentDownload(downloadManager);

            downloads.Add(metainfo.InfoHash, download);
            return(download);
        }