public void EjecutarMensaje(PaqueteEntrada mensaje, ClienteMonopolio.Modelo.Jugador jugador, ClienteMonopolio.Modelo.Juego juego, ClienteMonopolio.Graficos.GestionarVentanas graficos) { IMensajeEntrante IMensaje = Verificar_Mensaje(mensaje, graficos); if (IMensaje == null) { return; } try { IMensaje.Ejecutar(mensaje, jugador, juego, graficos); } catch (Exception e) { MessageBox.Show(e.ToString()); return; } }
private IMensajeEntrante Verificar_Mensaje(PaqueteEntrada Split, ClienteMonopolio.Graficos.GestionarVentanas graficos) { int Codigo_Entrada = -1; IMensajeEntrante IMensaje = null; try { Codigo_Entrada = Convert.ToInt32(Split.PopString()); if (!_mensajesEntrantes.TryGetValue(Codigo_Entrada, out IMensaje)) { return(null); } return(IMensaje); } catch (Exception) { return(null); } }
void LecturaDelServidor(IAsyncResult iar) { int BytesRecibidos; string mensajeRecibido; try { _jugador.Cliente = (TcpClient)iar.AsyncState; BytesRecibidos = _jugador.Cliente.GetStream().EndRead(iar); if (BytesRecibidos == 0) { MessageBox.Show("Conexión cerrada."); _graficos.CerrarVentanas(); return; } mensajeRecibido = Encoding.ASCII.GetString(_jugador.Lectura, 0, BytesRecibidos); _paquete = new PaqueteEntrada(mensajeRecibido.Split(';')); _mensajeManager.EjecutarMensaje(_paquete, _jugador, _juego, _graficos); _jugador.Lectura = new byte[512]; _jugador.Cliente.GetStream().BeginRead(_jugador.Lectura, 0, _jugador.Lectura.Length, LecturaDelServidor, _jugador.Cliente); } catch (PaqueteNoEncontradoException) { MessageBox.Show("Mensaje desconocido"); } catch (PaqueteLecturaException e) { MessageBox.Show(e.ToString()); _graficos.CerrarVentanas(); } catch (Exception exc) { MessageBox.Show(exc.ToString()); _graficos.CerrarVentanas(); } }