예제 #1
0
        public async void Settings_Disable_Push_Promise ()
        {
            var url = new Uri ("http://localhost:8999/index.html");
            var settings = new Http2ConnectionSettings (url) { DisablePushPromise = true };
            var http = new Http2Client (settings);

            await http.Connect ();

            var didAck = false;
            var semaphoreSettings = new SemaphoreSlim (0);
            var cancelTokenSource = new CancellationTokenSource ();

            var connectionStream = await http.StreamManager.Get (0);
            connectionStream.OnFrameReceived += (frame) => {
                // Watch for an ack'd settings frame after we sent the frame with no push promise
                if (frame.Type == FrameType.Settings) {
                    if ((frame as SettingsFrame).Ack) {
                        didAck = true;
                        semaphoreSettings.Release ();
                    }
                }
            };

            cancelTokenSource.CancelAfter (TimeSpan.FromSeconds (2));

            await semaphoreSettings.WaitAsync (cancelTokenSource.Token);

            Assert.IsTrue (didAck);
        }
예제 #2
0
        public async void Settings_Disable_Push_Promise()
        {
            var url      = new Uri("http://localhost:8999/index.html");
            var settings = new Http2ConnectionSettings(url)
            {
                DisablePushPromise = true
            };
            var http = new Http2Client(settings);

            await http.Connect();

            var didAck            = false;
            var semaphoreSettings = new SemaphoreSlim(0);
            var cancelTokenSource = new CancellationTokenSource();

            var connectionStream = await http.StreamManager.Get(0);

            connectionStream.OnFrameReceived += (frame) => {
                // Watch for an ack'd settings frame after we sent the frame with no push promise
                if (frame.Type == FrameType.Settings)
                {
                    if ((frame as SettingsFrame).Ack)
                    {
                        didAck = true;
                        semaphoreSettings.Release();
                    }
                }
            };

            cancelTokenSource.CancelAfter(TimeSpan.FromSeconds(2));

            await semaphoreSettings.WaitAsync(cancelTokenSource.Token);

            Assert.IsTrue(didAck);
        }