Пример #1
0
        protected void mContratoDeServicioThreadCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                MessageBox.Show(String.Format("Ocurrió un error en el hilo de ServiceContract: {0}", e.Error.Message));
            }
            else
            {
                if (mEstado == EstadoRed.Conectado)
                {
                    mCanalP2PThreadBGWorker = null;
                    mContratoDeServicio     = null;
                    if (mPseudoServidorAudioHttpListener == null && mPseudoServidorVideoHttpListener == null)
                    {
                        Utilidades.SetTextoTextBox(TextBoxNombreUsuario, "");
                        Utilidades.SetTextoTextBox(TextBoxNombreRed, "");
                        Utilidades.SetTextoTextBox(TextBoxPassword, "");
                    }
                }
                else if (mEstado == EstadoRed.UsuarioFallido)
                {
                    Utilidades.SetTextoTextBox(TextBoxNombreUsuario, "");
                }
                mEstado = EstadoRed.Desconectado;

                Utilidades.SetTextoLabel(LabelValorEstado, "Desconectado");
                Utilidades.SetEstadoActivadoContentControl(lblTitulo, false);
                Utilidades.SetEstadoActivadoContentControl(TextBoxNombreUsuario, true);
                Utilidades.SetEstadoActivadoContentControl(TextBoxNombreRed, true);
                Utilidades.SetEstadoActivadoContentControl(TextBoxPassword, true);
                Utilidades.SetEstadoActivadoContentControl(BotonConectar, true);
            }
        }
Пример #2
0
        protected void CerrarConexion()
        {
            if (null != mContratoDeServicio)
            {
                mContratoDeServicio.CerrarProceso();
                mContratoDeServicio = null;
            }

            if (null != mPseudoServidorVideoHttpListener)
            {
                mPseudoServidorVideoHttpListener.Stop();
            }

            if (null != mPseudoServidorAudioHttpListener)
            {
                mPseudoServidorAudioHttpListener.Stop();
            }

            if (null != mPseudoServidorVideoHttpListener)
            {
                mPseudoServidorVideoHttpListener.Salir();
            }

            if (null != mPseudoServidorAudioHttpListener)
            {
                mPseudoServidorAudioHttpListener.Salir();
            }

            if (null != mCanalP2PThreadBGWorker)
            {
                mCanalP2PThreadBGWorker.CancelAsync();
            }

            if (mEstado == EstadoRed.UsuarioFallido)
            {
                Utilidades.SetTextoTextBox(TextBoxNombreUsuario, "");
            }
            else
            {
                Utilidades.SetTextoTextBox(TextBoxNombreUsuario, "");
                Utilidades.SetTextoTextBox(TextBoxNombreRed, "");
                Utilidades.SetTextoTextBox(TextBoxPassword, "");
            }

            Utilidades.SetEstadoActivadoContentControl(TextBoxNombreUsuario, true);
            Utilidades.SetEstadoActivadoContentControl(TextBoxNombreRed, true);
            Utilidades.SetEstadoActivadoContentControl(TextBoxPassword, true);
        }
Пример #3
0
        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);
            }
        }