protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); AuthConfig.RegisterAuth(); HostContainer = new RemoteHostsContainer(); var lDecoders = DecoderManager.GetAvailableDecoders(aTimeout: 1000); Decoder = new DummyDecoder(); DecoderHub = GlobalHost.ConnectionManager.GetHubContext<DecoderHub>(); if (lDecoders.Count() > 0) { var lCandidate = lDecoders.First(); if (lCandidate.Start()) { if (Decoder != null) { Decoder.FFTDataReceived -= _OnFFTData; Decoder.TextDataReceived -= _OnTextData; Decoder.PropertyChanged -= _OnDecoderPropertyChanged; } Decoder = lCandidate; if (Decoder != null) { Decoder.FFTDataReceived += _OnFFTData; Decoder.TextDataReceived += _OnTextData; Decoder.PropertyChanged += _OnDecoderPropertyChanged; Decoder.CurrentMode = Decoder.SupportedModes.FirstOrDefault(); } } } }
public void AllSuccess() { this.mainHandshaker.Setup(x => x.NewRequestData()) .Returns(new WebSocketExtensionData("main", new Dictionary <string, string>())); this.mainHandshaker.Setup(x => x.HandshakeExtension( It.Is <WebSocketExtensionData>(v => v.Name.Equals("main")))) .Returns(this.mainExtension.Object); this.mainHandshaker.Setup(x => x.HandshakeExtension( It.Is <WebSocketExtensionData>(v => v.Name.Equals("fallback")))) .Returns(default(IWebSocketClientExtension)); this.fallbackHandshaker.Setup(x => x.NewRequestData()) .Returns(new WebSocketExtensionData("fallback", new Dictionary <string, string>())); this.fallbackHandshaker.Setup(x => x.HandshakeExtension( It.Is <WebSocketExtensionData>(v => v.Name.Equals("main")))) .Returns(default(IWebSocketClientExtension)); this.fallbackHandshaker.Setup(x => x.HandshakeExtension( It.Is <WebSocketExtensionData>(v => v.Name.Equals("fallback")))) .Returns(this.fallbackExtension.Object); var mainEncoder = new DummyEncoder(); var mainDecoder = new DummyDecoder(); this.mainExtension.Setup(x => x.Rsv).Returns(WebSocketRsv.Rsv1); this.mainExtension.Setup(x => x.NewExtensionEncoder()).Returns(mainEncoder); this.mainExtension.Setup(x => x.NewExtensionDecoder()).Returns(mainDecoder); var fallbackEncoder = new Dummy2Encoder(); var fallbackDecoder = new Dummy2Decoder(); this.fallbackExtension.Setup(x => x.Rsv).Returns(WebSocketRsv.Rsv2); this.fallbackExtension.Setup(x => x.NewExtensionEncoder()).Returns(fallbackEncoder); this.fallbackExtension.Setup(x => x.NewExtensionDecoder()).Returns(fallbackDecoder); var ch = new EmbeddedChannel(new WebSocketClientExtensionHandler( this.mainHandshaker.Object, this.fallbackHandshaker.Object)); IHttpRequest req = NewUpgradeRequest(null); ch.WriteOutbound(req); var req2 = ch.ReadOutbound <IHttpRequest>(); Assert.True(req2.Headers.TryGet(HttpHeaderNames.SecWebsocketExtensions, out ICharSequence value)); List <WebSocketExtensionData> reqExts = WebSocketExtensionUtil.ExtractExtensions(value.ToString()); IHttpResponse res = NewUpgradeResponse("main, fallback"); ch.WriteInbound(res); var res2 = ch.ReadInbound <IHttpResponse>(); Assert.True(res2.Headers.TryGet(HttpHeaderNames.SecWebsocketExtensions, out value)); List <WebSocketExtensionData> resExts = WebSocketExtensionUtil.ExtractExtensions(value.ToString()); Assert.Equal(2, reqExts.Count); Assert.Equal("main", reqExts[0].Name); Assert.Equal("fallback", reqExts[1].Name); Assert.Equal(2, resExts.Count); Assert.Equal("main", resExts[0].Name); Assert.Equal("fallback", resExts[1].Name); Assert.NotNull(ch.Pipeline.Context(mainEncoder)); Assert.NotNull(ch.Pipeline.Context(mainDecoder)); Assert.NotNull(ch.Pipeline.Context(fallbackEncoder)); Assert.NotNull(ch.Pipeline.Context(fallbackDecoder)); this.mainExtension.Verify(x => x.Rsv, Times.AtLeastOnce); this.fallbackExtension.Verify(x => x.Rsv, Times.AtLeastOnce); }