Example #1
0
 private void DoEditFormAcceptSystem(EditFormAccept req)
 {
     _dbHandler.SaveAllData();
     EndEdit();
     Builder.Output("Configuración realizada.");
 }
Example #2
0
 private void DoEditFormCancelSystem(EditFormCancel req)
 {
     EndEdit();
     Builder.Output("Configuración cancelada.");
 }
Example #3
0
 private void DoEditFormAcceptDelClient(EditFormAccept req)
 {
     _dbHandler.SaveAllData();
     EndEdit();
     Builder.Output("Cliente eliminado.");
 }
Example #4
0
 private void DoEditFormCancelDelClient(EditFormCancel req)
 {
     EndEdit();
     Builder.Output("Eliminación cancelada.");
 }
Example #5
0
 private void DoEditFormAcceptEditClients(EditFormAccept req)
 {
     _dbHandler.SaveAllData();
     EndEdit();
     Builder.Output("Edición aceptada.");
 }
Example #6
0
 private void DoEditFormCancelEditClients(EditFormCancel req)
 {
     EndEdit();
     Builder.Output("Edición cancelada.");
 }
Example #7
0
 private void DoEditFormCancelNewClient(EditFormCancel req)
 {
     EndEdit();
     Builder.Output("Registro cancelado.");
 }
Example #8
0
 private void DoEditFormAcceptNewClient(EditFormAccept req)
 {
     _dbHandler.SaveAllData();
     EndEdit();
     Builder.Output("Cliente registrado.");
 }
Example #9
0
 private void RegisterMessages()
 {
     Builder.Output("Messages Registered.");
 }
        static private void ContinuarModoInteractivo(string primero, string segundo)
        {
            // Comprobando cmd arg verbose
            if (segundo != null && (segundo == cla_v || segundo == cla_verbose))
            {
                OutputVerbose = true;
            }
            else
            {
                OutputVerbose = false;
            }

            // Preparando cache de texto para consola remota
            // Es imprescindible ejecutar este metodo antes de llamar a Builder.Output.
            ClientLogonEvent(new SupervisorClientLogEvent(SupervisorLoginType.Logoff));

            // Pasar a clase consoleoutput
            // instanciar aqui
            _messageOutput = new ConsoleOutput(OutputVerbose, false);

            //Console.Clear();
            //origRow = Console.CursorTop;
            //origCol = Console.CursorLeft;
            //baseRow = 0;

            Builder.Output("Iniciando Monitor.Service en modo interactivo.");

            if (!CargarConfiguracion())
            {
                return;
            }

            Builder.Output("Ejecutando acción interactiva.");

            switch (primero)
            {
            case cla_im:
            case cla_import:
            case cla_ex:
            case cla_export:
                ImportExport(primero, segundo);
                break;

            case cla_add:
            case cla_a:
            case cla_edit:
            case cla_e:
            case cla_del:
            case cla_d:
            case cla_sys:
            case cla_s:
                CargarFormulario(primero);
                break;

            case cla_console:
            case cla_c:
                CargarTodosEjecutarConsole();
                break;

            case cla_cc:
            case cla_create:
                CreateConfig();
                break;

            case cla_as:
            case cla_assist:
                Wizard_System();
                break;
            }

            // Salida de regreso a ModoInteractivo()
            // Terminar DbHandler
            _dbHandler = null;

            Builder.Output("Acción interactiva terminada.");
            Builder.Output("Terminado Monitor.Service en modo interactivo.");
        }
        /// <summary>
        /// Intenta reiniciar la aplicacion cliente. Si lo logra, el cliente se mueve
        /// de _timeOutList a _recoverList. Si no, el cliente se mueve a _deadList y no se monitorea mas.
        /// </summary>
        private void ClientTryToRestart()
        {
            bool flag;

            List <ClientData> buffer = new List <ClientData>(_timeOutList);

            foreach (var client in buffer)
            {
                // Log
                Builder.Output(string.Format(ClassName + ": Intentando reiniciar Cliente: {0} ejecutable: {1}.", client.Name, client.AppFilePath), TraceEventType.Information);

                // Comprobar si esta activo
                flag = GetProcessByName(client.AppName);

                // kill
                if (flag)
                {
                    KillProcessByName(client.AppName);
                }

                // "WerFault"
                const string pname = "WerFault";
                flag = GetProcessByName(pname);
                if (flag)
                {
                    KillProcessByName(pname);
                }
                // Realizar pausa mientras app termina
                System.Threading.Thread.Sleep(40);

                // Restart
                flag = StartProcessByName(client.AppFilePath);
                // Realizar pausa mientras sistema inicia
                System.Threading.Thread.Sleep(40);

                // Comprobar si se inicio, mover a donde corresponda y sacar de la cola
                if (flag)
                {
                    flag = GetProcessByName(client.AppName);
                }

                // Remover de la lista incondicionalmente.
                _timeOutList.Remove(client);

                // Mover en dependencia de si se reinicio o no.
                if (flag)
                {
                    client.Status = ClientStatus.Reiniciado;
                    client.RestartCount++;
                    client.RestartCountVolatil++;
                    client.EnterTime = DateTime.Now;

                    lock (_recoverList)
                    {
                        if (!_recoverList.Contains(client))
                        {
                            _recoverList.Add(client);
                        }
                    }
                    MessageBus.Send(new RequestSendEmail(EMessageAction.Restart, DateTime.Now, client));

                    Builder.Output(string.Format(ClassName + ": Reiniciado Cliente: {0} ejecutable: {1}.", client.Name, client.AppFilePath), TraceEventType.Information);
                }
                else
                {
                    client.Status = ClientStatus.Muerto;

                    lock (_deadList)
                    {
                        if (!_deadList.Contains(client))
                        {
                            _deadList.Add(client);
                        }
                    }

                    MessageBus.Send(new RequestSendEmail(EMessageAction.Dead, DateTime.Now, client));

                    Builder.Output(string.Format(ClassName + ": Imposible reiniciar Cliente: {0} ejecutable: {1}, movido a cola de Fuera de Control.", client.Name, client.AppFilePath), TraceEventType.Critical);
                }
            }
        }