Пример #1
0
        public void Setup()
        {
            for (int i = 0; i < 10; i++)
            {
                try {
                    listener    = new HttpListener();
                    ListenerURL = $"http://127.0.0.1:{new Random ().Next (10000, 50000)}/announce/";
                    listener.Prefixes.Add(ListenerURL);
                    listener.Start();
                    break;
                } catch {
                }
            }
            listener.BeginGetContext(GotContext, listener);

            requestedUrl.Clear();
            partialData = false;

            rig = TestRig.CreateMultiFile();

            connection = new HttpPeerConnection(rig.Manager, rig.Engine.Factories, new Uri(ListenerURL));
            rig.Manager.UnhashedPieces.SetAll(false);

            id                    = new PeerId(new Peer("this is my id", connection.Uri), connection, new MutableBitField(rig.Manager.PieceCount()).SetAll(true));
            id.IsChoking          = false;
            id.AmInterested       = true;
            id.MaxPendingRequests = numberOfPieces;
            id.MessageQueue.SetReady();

            rig.Manager.PieceManager.AddPieceRequests(id);
            requests = (RequestBundle)id.MessageQueue.TryDequeue();
        }
Пример #2
0
        public async Task SingleFileTorrent()
        {
            rig.Dispose();
            rig = TestRig.CreateSingleFile();
            rig.Torrent.HttpSeeds.Add($"{ListenerURL}File1.exe");

            string url = rig.Torrent.HttpSeeds[0];

            connection         = new HttpConnection(new Uri(url));
            connection.Manager = rig.Manager;
            rig.Manager.UnhashedPieces.SetAll(false);

            id              = new PeerId(new Peer("this is my id", connection.Uri), id.Connection, rig.Manager.Bitfield?.Clone().SetAll(false));
            id.IsChoking    = false;
            id.AmInterested = true;
            id.BitField.SetAll(true);
            id.MaxPendingRequests = numberOfPieces;
            id.MessageQueue.SetReady();

            rig.Manager.PieceManager.AddPieceRequests(id);
            requests = (RequestBundle)id.MessageQueue.TryDequeue();
            await ReceiveFirst();

            Assert.AreEqual(url, requestedUrl[0]);
        }
Пример #3
0
 public void abort(int id)
 {
     if (map.ContainsKey(id))
     {
         RequestBundle rb = map[id];
         rb.www.Abort();
         rb.www.Dispose();
         map.Remove(id);
     }
 }
Пример #4
0
        public void ChunkedRequest()
        {
            rig.Manager.PieceManager.Picker.CancelRequests(id);

            rig.Manager.PieceManager.AddPieceRequests(id);
            requests = (RequestBundle)id.Dequeue();

            byte[] sendBuffer = requests.Encode();
            var    sendTask   = Send(sendBuffer, 0, sendBuffer.Length, 1);

            Assert.ThrowsAsync <ArgumentException> (() => sendTask);
        }
Пример #5
0
        public void ChunkedRequest()
        {
            rig.Manager.PieceManager.CancelRequests(id);

            rig.Manager.PieceManager.AddPieceRequests(id);
            requests = (RequestBundle)id.MessageQueue.TryDequeue();

            using var releaser = SocketMemoryPool.Default.Rent(requests.ByteLength, out var buffer);
            requests.Encode(buffer.Span);
            var sendTask = Send(buffer, 1);

            Assert.ThrowsAsync <ArgumentException> (() => sendTask);
        }
Пример #6
0
        public void ProcessRequest(HttpContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            // Make sure we don't get any extra content in this handler (like Application.BeginRequest stuff);
            context.Response.Clear();
            BundleContext bundleContext = new BundleContext(new HttpContextWrapper(context), BundleTable.Bundles, BundleVirtualPath);

            RequestBundle.ProcessRequest(bundleContext);
        }
Пример #7
0
        public void ChunkedRequest()
        {
            rig.Manager.PieceManager.CancelRequests(id);

            rig.Manager.PieceManager.AddPieceRequests(id);
            requests = (RequestBundle)id.MessageQueue.TryDequeue();

            var sendBuffer = new ByteBuffer(requests.ByteLength);

            requests.Encode(sendBuffer.Data, 0);
            var sendTask = Send(sendBuffer, 0, sendBuffer.Data.Length, 1);

            Assert.ThrowsAsync <ArgumentException> (() => sendTask);
        }
Пример #8
0
        private int runWWWW(HTTPRequest hr, Action <Result> onOk)
        {
            setupHeaders(hr);
            OnFinishedHandler oh = new OnFinishedHandler(onOk);

            hr.Callback       = oh.onFinished;
            hr.ConnectTimeout = new TimeSpan((long)(10000000 * timeOut));
            int           id = getId();
            RequestBundle rb = new RequestBundle(hr);

            map.Add(id, rb);
            hr.Send();
            return(id);
        }
Пример #9
0
        private async Task <Response> SetColourIntent(RequestBundle request)
        {
            if (request.Intent.Slots.ContainsKey("Colour"))
            {
                var colour       = request.Intent.Slots["Colour"].Value;
                var responseText = await this.SqsRequest($"setColour/{colour}");

                return(GetFinalResponse(responseText));
            }
            else
            {
                return(GetFinalResponse("I didn't hear the colour that you specified"));
            }
        }
Пример #10
0
        public void Setup()
        {
            requestedUrl.Clear();
            partialData = false;

            rig = TestRig.CreateMultiFile();

            connection         = new HttpConnection(new Uri(ListenerURL));
            connection.Manager = rig.Manager;
            rig.Manager.UnhashedPieces.SetAll(false);

            id                    = new PeerId(new Peer("this is my id", connection.Uri), connection, new MutableBitField(rig.Manager.PieceCount()).SetAll(true));
            id.IsChoking          = false;
            id.AmInterested       = true;
            id.MaxPendingRequests = numberOfPieces;
            id.MessageQueue.SetReady();

            rig.Manager.PieceManager.AddPieceRequests(id);
            requests = (RequestBundle)id.MessageQueue.TryDequeue();
        }
Пример #11
0
        public void Setup()
        {
            requestedUrl.Clear();
            partialData = false;

            rig = TestRig.CreateMultiFile();
            rig.Manager.ChangePicker(new StandardPicker());

            connection         = new HttpConnection(new Uri(ListenerURL));
            connection.Manager = rig.Manager;
            rig.Manager.UnhashedPieces.SetAll(false);

            id              = new PeerId(new Peer("this is my id", connection.Uri), connection, rig.Manager.Bitfield?.Clone().SetAll(false));
            id.IsChoking    = false;
            id.AmInterested = true;
            id.BitField.SetAll(true);
            id.MaxPendingRequests = numberOfPieces;

            rig.Manager.PieceManager.AddPieceRequests(id);
            requests = (RequestBundle)id.Dequeue();
        }
Пример #12
0
        private async Task <Response> StartRollIntent(RequestBundle request)
        {
            var responseText = await this.SqsRequest("startRoll");

            return(GetFinalResponse(responseText));
        }