Ejemplo n.º 1
0
 /**
  * Desconecta una central
  */
 public bool DesconectarCentral(string socketId)
 {
     if (centrales.TryGetValue(socketId, out CentralMonitoreo c))
     {
         CentralLog log = new CentralLog(c, CentralLogTipo.Get(ECentralLogTipo.Desconectado));
         log.Save();
         centrales.Remove(socketId);
         return(true);
     }
     return(false);
 }
Ejemplo n.º 2
0
        /**
         * Conecta una central y la agrega al diccionario.
         */
        public bool ConectarCentral(string socketId, string centralId, string contraseña)
        {
            CentralMonitoreo c = CentralMonitoreo.Get(centralId);

            if (c == null || !c.Contraseña.Equals(contraseña))
            {
                return(false);
            }

            CentralLog log = new CentralLog(c, CentralLogTipo.Get(ECentralLogTipo.Conectado));

            log.Save();

            centrales[socketId] = c;

            return(true);
        }
        public async void ReintentarInterrogacion(object state)
        {
            CentralReintento reintento = (CentralReintento)state;

            reintento.SiguienteReintento();

            // Chequeamos que siga existiendo
            if (CentralMonitoreoManager.Instance.ExisteCentral(reintento.SocketID))
            {
                // Si se puede reintentar
                if (reintento.Reintentos < config.Reintentos)
                {
                    await MessagesHandler.Instance.InvokeClientMethodOnlyAsync(reintento.SocketID, "intSecuencial", reintento.Reintentos);
                }

                // Si llegó al límite de reintentos
                else
                {
                    // Destruyo el timer
                    if (centralesSinRespuesta.TryGetValue(reintento.SocketID, out Timer timer))
                    {
                        timer.Dispose();
                        centralesSinRespuesta.Remove(reintento.SocketID);
                    }

                    // Logeo la pérdida de conexión...
                    CentralLog log = new CentralLog(CentralMonitoreoManager.Instance.ObtenerCentral(reintento.SocketID), CentralLogTipo.Get(ECentralLogTipo.PerdidaConexion));
                    log.Save();

                    // Me desconecto de la central...
                    await MessagesHandler.Instance.OnDisconnected(reintento.SocketID);
                }
            }
        }