public static MensagemServidor UpdateEstadoGlobalSistema(string idCliente, string idJogo, string idOrigem, string destino, RoomDesc novaSala, int pontuacaoAntiga, int pontuacaoNova, bool jogoTerminou, string resultadoAccaoCliente, string guid) { MensagemServidor mensagem = new MensagemServidor(idCliente, idOrigem, destino, Mensagem.UPDATEESTADOGLOBAL); mensagem._novaSala = novaSala; mensagem._idJogo = idJogo; mensagem._pontuacaoAntiga = pontuacaoAntiga; mensagem._pontuacaoNova = pontuacaoNova; mensagem._jogoTerminou = jogoTerminou; mensagem._resultadoAccaoCliente = resultadoAccaoCliente; mensagem._idUnico = guid; return mensagem; }
public static MensagemServidor RegistaNovoJogadorNoSistema(string idCliente, string idOrigem, string idDestino) { MensagemServidor mensagem = new MensagemServidor(idCliente, idOrigem, idDestino, Mensagem.REGISTANOVOJOGADORNOSISTEMA); return mensagem; }
public static MensagemServidor RemoveServidorDoSistema(string idOrigem, string idDestino, string idServidorARemover, ArrayList lstJogos) { MensagemServidor mensagem = new MensagemServidor("Nao vem de um cliente", idOrigem, idDestino, Mensagem.REMOVESERVIDORSISTEMA); mensagem._novoEstado = lstJogos; return mensagem; }
public static MensagemServidor MorreuOutroServidor(string meuId, string idServidorQueMorreu, ArrayList listaJogos) { MensagemServidor mensagem = new MensagemServidor("Nao vem de um cliente", meuId, Mensagem.IPBROADCAST, Mensagem.MORREU_OUTRO_SERVIDOR); mensagem._idServidorQueMorreu = idServidorQueMorreu; mensagem._listaJogos = listaJogos; return mensagem; }
public static MensagemServidor PedidoTentativaAbrirTesouro(string idCliente, string idJogo, string idOriginadorMensagem, string idServidorDestino, int numSala, string guid) { MensagemServidor mensagem = new MensagemServidor(idCliente, idOriginadorMensagem, idServidorDestino, TENTATIVAABRIRTESOURO); mensagem._idJogo = idJogo; mensagem._numSala = numSala; mensagem._idUnico = guid; return mensagem; }
public static MensagemServidor FazSTOP(string meuId, string servidorMortoCausouStop, string idCliente, string idJogo, int numSala) { MensagemServidor mensagem = new MensagemServidor(idCliente, meuId, Mensagem.IPBROADCAST, Mensagem.STOP); mensagem._idJogo = idJogo; mensagem._numSala = numSala; mensagem._idServidorQueMorreu = servidorMortoCausouStop; return mensagem; }
public static MensagemServidor MensagemAvisoFosteDeclaradoMorto(string meuId, string idServidorQueMorreu) { MensagemServidor mensagem = new MensagemServidor("Nao vem de um cliente", meuId, idServidorQueMorreu, Mensagem.FOSTE_CONSIDERADO_MORTO); return mensagem; }
public static MensagemServidor FazReplyStop(string meuId, string idDestinatario, string servidorMortoCausouStop, string idCliente, string idJogo, int numSala) { MensagemServidor mensagem = new MensagemServidor(idCliente, meuId, idDestinatario, Mensagem.REPLY_STOP); mensagem._idJogo = idJogo; mensagem._numSala = numSala; mensagem._idServidorQueMorreu = servidorMortoCausouStop; return mensagem; }
public static MensagemServidor EntraNovoJogadorNumJogo(string idCliente, string idOrigem, string idDestino, string idJogo) { MensagemServidor mensagem = new MensagemServidor(idCliente, idOrigem, idDestino, Mensagem.ENTRANOVOJOGADORNUMJOGO); mensagem._idJogo = idJogo; return mensagem; }
public static MensagemServidor AvisaServidorVaiSair(string idOrigem, string idDestino) { MensagemServidor mensagem = new MensagemServidor("Nao vem de um cliente", idOrigem, idDestino, Mensagem.AVISOSERVIDORVAISAIR); return mensagem; }
public static MensagemServidor AdicionaNovoJogoSistema(string idOrigem, string idDestino, Jogo jogo) { string idCliente = "Nao 'e importante saber quem criou o jogo"; MensagemServidor mensagem = new MensagemServidor(idCliente, idOrigem, idDestino, Mensagem.ADICIONANOVOJOGOSISTEMA); mensagem._novoJogo = jogo; return mensagem; }
/// <summary> /// Envia de facto a mensagem para o servidor (trata do problema do control-c /// </summary> /// <param name="mensagem">Mensagem a ser enviada para o outro servidor</param> private static void enviaMensagemParaServidor(MensagemServidor mensagem) { Servidor servidorDestino = Servidor.GetServidor(mensagem._idDestinatarioMensagem, ServerMain.TodosServidores); try { //envia mensagem para o cliente servidorDestino.Ligacao.MessageQueue(mensagem); //Se nao der erro //Se for uma mensagem da qual espero retorno (pode haver timeout) if (mensagem.EMsgComRetorno() == true) { Configuration.Debug("Vou meter para enviar uma mensagem do tipo:" + mensagem.Tipo + " para: " + mensagem._idDestinatarioMensagem, Configuration.PRI_MIN); //Só as mensagens do tipo de servidor é que podem ter retorno MensagemServidor msg = (MensagemServidor)mensagem; lock (_lstRespostasMensagensPendentes) { _lstRespostasMensagensPendentes.Add(msg); } } } catch (System.Runtime.Remoting.RemotingException exception) { if (servidorDestino.Vivo == false) { Configuration.Debug("Comunicaçao morreu a meio porque o outro servidor fechou-se a meio. Era o esperado.", Configuration.PRI_MAX); return; } //para tirar o warning exception.GetType(); string msgErro = "Servidor morto com control-C, vou remover da lista de servidores, redistribuir todos jogos e avisar outros"; Configuration.Debug("Servidor morto: " + mensagem._idDestinatarioMensagem + " tipo: " + mensagem.Tipo, Configuration.PRI_MAX); Configuration.Debug(msgErro, Configuration.PRI_MAX); TrataDescobertaMorteServidor(servidorDestino.Identificacao, mensagem.IdCliente, mensagem.IdJogo, mensagem.NumSala); } catch (System.Net.Sockets.SocketException exception) { if (servidorDestino.Vivo == false) { Configuration.Debug("Comunicaçao morreu a meio porque o outro servidor fechou-se a meio. Era o esperado.", Configuration.PRI_MAX); return; } //para tirar o warning exception.GetType(); string msgErro = "Servidor morto com control-C, vou remover da lista de servidores, redistribuir todos jogos e avisar outros"; Configuration.Debug("Servidor morto: " + mensagem._idDestinatarioMensagem + " tipo: " + mensagem.Tipo, Configuration.PRI_MAX); Configuration.Debug(msgErro, Configuration.PRI_MAX); TrataDescobertaMorteServidor(servidorDestino.Identificacao, mensagem.IdCliente, mensagem.IdJogo, mensagem.NumSala); } }