public void EndConnection() { //make sure we're not calling this multiple times if (this.CurrentState != SystemState.LoggedOut) { this.CurrentState = SystemState.LoggedOut; //reset UI after changing SystemState P2pWorker.ReportProgress(0, ThreadMessage.Create(UiMessage.ToggleUi, string.Empty)); //close and set classes to null if (p2p != null) { p2p.Close(); p2p = null; } if (videoHttpListener != null) { videoHttpListener.Stop(); videoHttpListener.Quit(); videoHttpListener = null; } if (P2pWorker != null) { P2pWorker.CancelAsync(); } } }
void P2PLib_StreamChanged(object sender, StreamedChangedEventArgs e) { //take packet from server & use videoHttpListener to write to localhost videoHttpListener.StreamedChanged(e); //set client to listen to stream if (e.StreamedPacket.packetNumber == 0) { string file = StreamingHttpListener.SafeHttpString(e.StreamedPacket.fileName); string url = String.Format(@"http://localhost:8088/{0}/video/{1}", userName, file); P2pWorker.ReportProgress(100, ThreadMessage.Create(UiMessage.StreamVideo, url)); } }
private void SubscribeToPeerChannelEvents() { //hook up the events we care about...text and status for the server p2p.StatusChanged += new EventHandler <StatusChangedEventArgs>(P2PLib_StatusChanged); p2p.TextPeerChannelHelper.ChatChanged += new EventHandler <ChatChangedEventArgs>(P2PLib_ChatChanged); //only setup the listener in client mode if (!App.IsServerMode) { p2p.StreamedVideo.StreamChanged += new EventHandler <StreamedChangedEventArgs>(P2PLib_StreamChanged); } //required by server for start/send stream, used by client for StreamChanged event defined above) videoHttpListener = new StreamingHttpListener(userName + "/video/", MediaFinished, LogMessage, p2p.StreamedVideo.StartStream, p2p.StreamedVideo.SendStream); }