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); } } }
/** * 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); }
/** * 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); }