Exemplo n.º 1
0
        /// <summary>
        /// Responsável por fazer a escuta em tempo real da threadComunicaoServidor
        /// </summary>
        protected virtual void RnProcessarEventos()
        {
            String        mensagemJson = "";
            MensagemDto   m;
            List <string> mensagens;
            string        msgAtual = "";

            try
            {
                while (autenticado)
                {
                    if (tcpAdapter == null || !tcpAdapter.ValidarConexao())
                    {
                        ProcessarMensagemEvento(Mensagem.RnCriarMensagemServidorDesconectando("Você acabou se ser desconectado, verifique sua rede ou contate o administrador"));
                        continue;
                    }
                    if (!autenticado)
                    {
                        continue;
                    }
                    if (!tcpAdapter.PossuiDadosParaLeitura())
                    {
                        Thread.Sleep(15);
                        continue;
                    }
                    mensagemJson = tcpAdapter.EfetuarLeitura();
                    if (mensagemJson.Trim() == "")
                    {
                        continue;
                    }

                    if (mensagemJson.Contains("\n"))
                    {
                        mensagens = mensagemJson.Split('\n').ToList();
                        foreach (string msg in mensagens)
                        {
                            if (String.IsNullOrEmpty(msg))
                            {
                                continue;
                            }

                            msgAtual = msg.Trim();
                            if (Buffer != "")
                            {
                                msgAtual = Buffer + msgAtual;
                                Buffer   = "";
                            }
                            m = Mensagem.DeserializarMensagemDto(TcpUtil.RemoverStringProtecaoDeIntegridade(msgAtual));
                            ProcessarMensagemEvento(m);
                            msgAtual = "";
                        }
                    }
                    else
                    {
                        Buffer += mensagemJson;
                    }

                    Thread.Sleep(10);
                }
            }
            catch (JsonException excessao)
            {
                Debug.WriteLine(string.Format("MultiAccessClient do {3} (Leitura) - Mensagem Json:{2}Excessão:{0}\nCallStack{1}", excessao.Message, excessao.StackTrace, msgAtual, Login), "JsonConvert:");
                //continue;
                throw excessao;
            }
            catch (InvalidOperationException e)
            {
                Debug.WriteLine(string.Format("Ocorreu a excessão:{0}\nLocal:{1}", e.Message, e.StackTrace), Thread.CurrentThread.Name);
                ProcessarMensagemEvento(Mensagem.RnCriarMensagemServidorDesconectando(String.Format("{0}\n {1}", e.Message, e.StackTrace)));
                RnDesconectar();
                throw e;
            }
            catch (Exception e)
            {
                DumperExtension.ShowStackTrace("Exception no client.");
                Debug.WriteLine(string.Format("Ocorreu a excessão:{0}\nLocal:{1}\n Target Site:{2}", e.Message, e.StackTrace, e.TargetSite), Thread.CurrentThread.Name);
                RnDesconectar();
                throw e;
            }
        }