private void PageHandler(OpenSource.UPnP.UPnPDevice sender, OpenSource.UPnP.HTTPMessage msg, OpenSource.UPnP.HTTPSession WebSession, string VirtualDir) { if (VirtualDir.Equals("/stream", StringComparison.InvariantCultureIgnoreCase) && msg.DirectiveObj.Equals("/swyh.mp3", StringComparison.InvariantCultureIgnoreCase)) { WebSession.OnStreamDone += (s, e) => { if (sessionMp3Streams.ContainsKey(s.SessionID)) { PipeStream value; sessionMp3Streams.TryRemove(s.SessionID, out value); App.CurrentInstance.wasapiProvider.UpdateClientsList(); } }; PipeStream stream = sessionMp3Streams.GetOrAdd(WebSession.SessionID, new PipeStream()); App.CurrentInstance.wasapiProvider.UpdateClientsList(); WebSession.SendStreamObject(stream, "audio/mpeg"); } else if (VirtualDir.Equals("/stream", StringComparison.InvariantCultureIgnoreCase) && msg.DirectiveObj.Equals("/swyh.wav", StringComparison.InvariantCultureIgnoreCase)) { WebSession.OnStreamDone += (s, e) => { if (sessionPcmStreams.ContainsKey(s.SessionID)) { PipeStream value; sessionPcmStreams.TryRemove(s.SessionID, out value); App.CurrentInstance.wasapiProvider.UpdateClientsList(); } }; PipeStream stream = sessionPcmStreams.GetOrAdd(WebSession.SessionID, new PipeStream()); App.CurrentInstance.wasapiProvider.UpdateClientsList(); var audioFormat = AudioSettings.GetAudioFormat(); WebSession.SendStreamObject(stream, "audio/L16;rate=" + audioFormat.SampleRate + ";channels=" + audioFormat.Channels); } else if (VirtualDir.Equals("/about", StringComparison.InvariantCultureIgnoreCase)) { OpenSource.UPnP.HTTPMessage response = new OpenSource.UPnP.HTTPMessage(); response.StatusCode = 200; response.StatusData = "OK"; response.AddTag("Content-Type", "text/html"); response.BodyBuffer = System.Text.Encoding.UTF8.GetBytes(Properties.Resources.About); WebSession.Send(response); } else { OpenSource.UPnP.HTTPMessage response = new OpenSource.UPnP.HTTPMessage(); response.StatusCode = 404; response.StatusData = "Not Found"; response.AddTag("Content-Type", "text/html"); response.BodyBuffer = System.Text.Encoding.UTF8.GetBytes(Properties.Resources.Error404); WebSession.Send(response); } }