示例#1
0
        void stmclient_OnDisconnect(string Desc)
        {
            logger.Info("OnDisconnect(): " + Desc);

            string body    = "";
            string subject = System.Environment.MachineName + " STM: Desconectado da bolsa";

            body += System.Environment.MachineName + " Conector STM: ";
            body += "\r\n";
            body += "Desconectado da  BOLSA: " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
            body += "\r\n";
            body += "Desc: " + Desc + "\r\n";

            Gradual.OMS.Library.Utilities.EnviarEmail(subject, body);

            stmclient = null;
        }
示例#2
0
        void stmclient_OnError(int error, string msg, string description)
        {
            logger.ErrorFormat("stmclient_OnError({0},{1},{2})", error, msg, description);

            string body    = "";
            string subject = System.Environment.MachineName + " STM: Desconectado da bolsa";

            body += System.Environment.MachineName + " Conector STM: ";
            body += "\r\n";
            body += "Desconectado da  BOLSA: " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
            body += "\r\n";
            body += "Erro: " + error.ToString() + "\r\n";
            body += "Msg : " + msg + "\r\n";
            body += "Desc: " + description + "\r\n";

            Gradual.OMS.Library.Utilities.EnviarEmail(subject, body);

            stmclient.Disconnect();

            stmclient = null;
        }
示例#3
0
        public void Run()
        {
            try
            {
                int lastTrial = 600;

                logger.Info("Iniciando conexao com STM");

                byte[] senhaDecoded = Convert.FromBase64String(ConfigurationManager.AppSettings["STMPasswd"].ToString());
                byte[] userDecoded  = Convert.FromBase64String(ConfigurationManager.AppSettings["STMUser"].ToString());

                while (_bKeepRunning)
                {
                    if (stmclient == null && lastTrial > 600)
                    {
                        logger.Info("Tentando conectar com STM");

                        stmclient = new STMCom.TSTMCom();

                        stmclient.Cas_Funcionario = Encoding.UTF8.GetString(userDecoded);
                        stmclient.Cas_Usuario     = "227";
                        stmclient.Cas_Senha       = Encoding.UTF8.GetString(senhaDecoded);
                        stmclient.Compressed      = true;
                        //stmclient.Filter = "<AN  >+;<ANF >+;";
                        //                     0123456
                        stmclient.Ack = true;

                        // Caso efetue troca de senha
                        if (ConfigurationManager.AppSettings["STMNewPasswd"] != null)
                        {
                            string novasenha        = ConfigurationManager.AppSettings["STMNewPasswd"].ToString();
                            byte[] novasenhaDecoded = Convert.FromBase64String(novasenha);


                            logger.Info("Efetuando troca de senha [" + Encoding.UTF8.GetString(senhaDecoded) +
                                        "] -> [" + Encoding.UTF8.GetString(novasenhaDecoded) + "]");


                            stmclient.Cas_NovaSenha = Encoding.UTF8.GetString(novasenhaDecoded);

                            // Remove a nova senha, no arquivo de configuracao inclusive
                            Configuration stmconfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

                            stmconfig.AppSettings.Settings.Remove("STMNewPasswd");
                            stmconfig.AppSettings.Settings.Remove("STMPasswd");
                            stmconfig.AppSettings.Settings.Add("STMPasswd", novasenha);

                            stmconfig.Save(ConfigurationSaveMode.Modified);
                            ConfigurationManager.RefreshSection("appSettings");
                        }

                        stmclient.OnAcceptStart += new STMCom.ISTMComEvents_OnAcceptStartEventHandler(stmclient_OnAcceptStart);
                        stmclient.OnConnect     += new STMCom.ISTMComEvents_OnConnectEventHandler(stmclient_OnConnect);
                        stmclient.OnDisconnect  += new STMCom.ISTMComEvents_OnDisconnectEventHandler(stmclient_OnDisconnect);
                        stmclient.OnError       += new STMCom.ISTMComEvents_OnErrorEventHandler(stmclient_OnError);
                        stmclient.OnStarted     += new STMCom.ISTMComEvents_OnStartedEventHandler(stmclient_OnStarted);
                        stmclient.OnReceiveData += new STMCom.ISTMComEvents_OnReceiveDataEventHandler(stmclient_OnReceiveData);

                        logger.Info("Chamando connect()");

                        bool bConnect = stmclient.Connect();

                        if (!bConnect)
                        {
                            logger.Error("Connect voltou false");
                            stmclient = null;
                        }

                        lastTrial = 0;
                    }
                    else
                    {
                        lastTrial++;
                    }

                    Thread.Sleep(100);
                }

                if (stmclient != null)
                {
                    stmclient.Disconnect();
                }
            }
            catch (Exception ex)
            {
                logger.Error("Run(): " + ex.Message, ex);
            }
        }