public void mContratoDeServicio_StreamAudioListener(object sender, StreamChangedEventArgs e) { MultimediaUserControl audio = Audio; if (audio != null) { if (audio.CheckAccess()) { bool play = false; play = e.StreamPacket.nombreNodoEmisor == TextBoxNombreUsuario.Text; MessageBoxResult mbr = MessageBoxResult.Cancel; if (false == play) { mbr = MessageBox.Show(e.StreamPacket.nombreNodoEmisor + " le invita a escuchar la canción '" + e.StreamPacket.titulo + "'. ¿Acepta la invitación?", "Invitación de audio.", MessageBoxButton.OKCancel); } if (play || mbr == MessageBoxResult.OK) { Utilidades.SetTextoLabel(audio.LabelMetadatosLineaTitulo, "Título:"); Utilidades.SetTextoLabel(audio.LabelMetadatosLineaArtista, "Artista:"); Utilidades.SetTextoLabel(audio.LabelMetadatosLineaAlbum, "Álbum:"); Utilidades.SetTextoTextBlock(audio.TextBlockValorMetadatosLineaTitulo, e.StreamPacket.titulo); Utilidades.SetTextoTextBlock(audio.TextBlockValorMetadatosLineaArtista, e.StreamPacket.artista); Utilidades.SetTextoTextBlock(audio.TextBlockValorMetadatosLineaAlbum, e.StreamPacket.album); audio.StartPlayElementoMultimedia("http://localhost:8088/" + TextBoxNombreUsuario.Text + TextBoxNombreRed.Text + "/audio/" + PseudoServidorHttpListener.StringHttpGuardado(e.StreamPacket.nombreArchivo)); } } else { if (mPseudoServidorAudioHttpListener != null) { mPseudoServidorAudioHttpListener.StreamChanged(e); if (e.StreamPacket.numPacket == 0) { audio.Dispatcher.Invoke(DispatcherPriority.Normal, new _mContratoDeServicio_StreamAudioListenerHandler(mContratoDeServicio_StreamAudioListener), sender, e); } } } } }
protected void VideoBGWorkerThreadFinished(object sender, RunWorkerCompletedEventArgs e) { if (e.Error != null) { MessageBox.Show(String.Format("Ocurrió un error en el hilo que procesa el video:{0}", e.Error.Message)); } else { mPseudoServidorVideoHttpListener = null; if (mCanalP2PThreadBGWorker == null && mPseudoServidorAudioHttpListener == null) { Utilidades.SetTextoLabel(LabelValorEstado, "Desconectado"); mEstado = EstadoRed.Desconectado; Utilidades.SetEstadoActivadoContentControl(TextBoxNombreUsuario, true); Utilidades.SetEstadoActivadoContentControl(TextBoxNombreRed, true); Utilidades.SetEstadoActivadoContentControl(TextBoxPassword, true); Utilidades.SetEstadoActivadoContentControl(BotonConectar, true); } } }
private void mServiceContractThread(object sender, DoWorkEventArgs doWorkArgs) { mContratoDeServicio = new ContratoDeServicio(); if (false == mContratoDeServicio.IniciarCanalP2P(Utilidades.GetTextoTextbox(TextBoxNombreUsuario), Utilidades.GetTextoTextbox(TextBoxNombreRed), Utilidades.GetTextoTextbox(TextBoxPassword))) { CerrarConexion(); } mContratoDeServicio.EstadoRedChanged += new EventHandler <EstadoRedChangedEventArgs>(MiEstadoRedChanged); mContratoDeServicio.AyudanteChat.ChatChanged += new EventHandler <ChatChangedEventArgs>(Chat_ChatChanged); mContratoDeServicio.AyudanteImagen.ImagenChanged += new EventHandler <ImagenChangedEventArgs>(Imagen_ImagenChanged); mContratoDeServicio.AyudanteFichero.FicheroChanged += new EventHandler <FicheroChangedEventArgs>(Fichero_FicheroChanged); mContratoDeServicio.AyudanteDescarga.DescargaChanged += new EventHandler <DescargaChangedEventArgs>(Descarga_DescargaChanged); if (Audio != null) { mContratoDeServicio.AyudanteAudio.StreamChanged += new EventHandler <StreamChangedEventArgs>(mContratoDeServicio_StreamAudioListener); mPseudoServidorAudioHttpListener = new PseudoServidorHttpListener(Utilidades.GetTextoTextbox(TextBoxNombreUsuario) + Utilidades.GetTextoTextbox(TextBoxNombreRed) + "/audio/", AudioBGWorkerThreadFinished, MensajeDeEstadoAudio, mContratoDeServicio.AyudanteAudio.IniciarStream, mContratoDeServicio.AyudanteAudio.TrozoStreamEnviado); } if (Video != null) { mContratoDeServicio.AyudanteVideo.StreamChanged += new EventHandler <StreamChangedEventArgs>(mContratoDeServicio_StreamVideoListener); mPseudoServidorVideoHttpListener = new PseudoServidorHttpListener(Utilidades.GetTextoTextbox(TextBoxNombreUsuario) + Utilidades.GetTextoTextbox(TextBoxNombreRed) + "/video/", VideoBGWorkerThreadFinished, MensajeDeEstadoVideo, mContratoDeServicio.AyudanteVideo.IniciarStream, mContratoDeServicio.AyudanteVideo.TrozoStreamEnviado); } while ((mPseudoServidorAudioHttpListener != null && mPseudoServidorVideoHttpListener != null) && (!(mPseudoServidorAudioHttpListener.EstaPseudoServidorPreparado || mPseudoServidorVideoHttpListener.EstaPseudoServidorPreparado))) { System.Threading.Thread.Sleep(0); } if (mPseudoServidorAudioHttpListener != null && mPseudoServidorVideoHttpListener != null) { while (mEstado == EstadoRed.Conectando) { System.Threading.Thread.Sleep(100); progressBarEstadoRed.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart) delegate { progressBarEstadoRed.Value = ((progressBarEstadoRed.Value >= 100) ? 0 : progressBarEstadoRed.Value + 1); }); if (mCanalP2PThreadBGWorker.CancellationPending) { progressBarEstadoRed.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart) delegate { progressBarEstadoRed.Value = 0; }); mCanalP2PThreadBGWorker = null; break; } } progressBarEstadoRed.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart) delegate { progressBarEstadoRed.Value = 100; }); while (true) { System.Threading.Thread.Sleep(1000); if (mCanalP2PThreadBGWorker.CancellationPending) { progressBarEstadoRed.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart) delegate { progressBarEstadoRed.Value = 0; }); mCanalP2PThreadBGWorker = null; break; } } } else { mEstado = EstadoRed.UsuarioFallido; Utilidades.SetTextoLabel(lblValorEstado, "Desconectando..."); Utilidades.SetTextoTextBox(TextBoxNombreUsuario, "USUARIO FALLIDO - Por favor, espere unos segundos..."); CerrarConexion(); mContratoDeServicio = null; mCanalP2PThreadBGWorker = null; MessageBox.Show("Lo sentimos en este momento su Nombre de Usuario ya existe en la red.\n" + "\nPor favor, vuelva a intentarlo con un Nombre de Usuario distinto.", "Nombre de Usuario actualmente en uso.", MessageBoxButton.OK, MessageBoxImage.Error); } }