//Envia el serialNum asignado a una alarma LENEL: Mensajes, speed, Panic, etc.
        public void AsignarSerialAAlarma(int v_alarmID, int v_serialNum, string tipoAlarma)
        {
            string organizationID = Helpers.GetInstance().MainOrgID.ToString();

            System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();

            try
            {
                try
                {
                    Helpers.GetInstance().DoLog("Hecho addSetAlarma de: alarmID=" + v_alarmID + " tipoAlarma=" + tipoAlarma + " serialNum=" + v_serialNum);
                    PoolSetAlarma.GetInstance().addSetAlarma(v_alarmID.ToString(), tipoAlarma, v_serialNum.ToString());
                    if (PoolGetAlarm.GetInstance().isEmpty())
                    {
//                        Helpers.GetInstance().DoLog("isEmpty de Alarma dio True");
                        PoolSetAlarma.GetInstance().ContinuarPoolSet();
                    }
                    //else
                    //    Helpers.GetInstance().DoLog("isEmpty dio False");
                }
                catch (Exception ex)
                {
                    Helpers.GetInstance().DoLog("EXCEPCION en AsignarSerialAAlarma: ALARMID: " + v_alarmID.ToString() + ", SERIALNUM:" + v_serialNum + " - " + ex.Message);
                }
            }
            catch (Exception ex)
            {
                Helpers.GetInstance().DoLog("EXCEPCION en AsignarSerialAAlarmaMUTEX: " + ex.Message);
            }
        }
예제 #2
0
        static int _refCount = 0;       // Contador de referencias usadas por los translators. Si llega a cero se detiene el thread y se libera la referencia

        #region Singleton
        public static PoolGetAlarm GetInstance()
        {
            if (_instance == null)
            {
                _instance = new PoolGetAlarm();
            }
            return(_instance);
        }
예제 #3
0
 public void subRefCount()
 {
     _refCount--;
     Helpers.GetInstance().DoLog("Resto refCount de PoolGetAlarm =" + _refCount);
     Thread.Sleep(100);
     if (_refCount == 0)
     {
         Stop();                                 // Detiene el thread de verificacion
         Thread.Sleep(500);
         _instance = null;                       // Hace null la referencia para que un nuevo GetInstance lance todo de nuevo
         Helpers.GetInstance().DoLog("Instance de PoolGetAlarm es NULL");
     }
 }
        /// <summary>
        /// Mensaje para notificar la dada de baja de Panel.
        /// Solo se envia deletePanel si realmente se dio de baja y no existe en Lenel-
        /// Ademas usa DC para eliminar el usuario asociado al panel.
        /// </summary>
        public void deletePanel(int PanelID, string panelName)
        {
            PoolGetConnStatus.GetInstance().subRefCount();                          // Para detener el thread y liberar memoria en caso de ser el ultimo panel que se da de baja.
            PoolGetAlarm.GetInstance().subRefCount();
            PoolGetAcceso.GetInstance().subRefCount();
            PoolSetAlarma.GetInstance().subRefCount();
            PoolSetAcceso.GetInstance().subRefCount();
            System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
            string orgID = Helpers.GetInstance().MainOrgID.ToString();                // El configurado en el registro

            try
            {
                //Helpers.GetInstance().mutexTCP_ACCESS.WaitOne();
                try
                {
                    string errDesc = "";
                    int    errCode = -1;

                    if (!WebServiceAPI.GetInstance().ExistePanelEnOnGuard(PanelID.ToString(), out errDesc, out errCode))
                    {
                        WebServiceAPI.GetInstance().DeleteDevice(PanelID.ToString(), orgID, out errDesc, out errCode);
                        if (errCode == (int)StatusCode.OK)
                        {
                            Employee emp = WebServiceAPI.GetInstance().ObtenerEmpleadoAsociadoAHH(panelName, out errDesc, out errCode);
                            if (emp != null)
                            {
                                Helpers.GetInstance().DoLog("Va a borrar el empleado " + emp.Nombre + " " + emp.Apellido + " con personid: " + emp.PersonID.ToString() + " asociado al panelID: " + PanelID.ToString() + " llamado:" + panelName);
                                WebServiceAPI.GetInstance().EliminarEmpleado(emp.PersonID, out errDesc, out errCode);
                            }
                            else
                            {
                                Helpers.GetInstance().DoLog("emp es NULL en deletePanel. NO borró el empleado asociado al panel " + PanelID.ToString());
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Helpers.GetInstance().DoLog("EXCEPCION en deletePanel: " + ex.Message);
                }
            }
            catch (Exception ex)
            {
                Helpers.GetInstance().DoLog("EXCEPCION en deletePanelMUTEX: " + ex.Message);
            }
            //finally
            //{
            //    Helpers.GetInstance().mutexTCP_ACCESS.ReleaseMutex();
            //}
        }
        public static List <string> ListaPanelNames = new List <string>();          // Lista de todos los PanelNames que levanta este CommServer..

        //string m_Name;
        //int m_PanelID;

        // Constructor de la clase managed asociada al Translator.
        // Hay una instancia por cada Translator, y por lo tanto una por cada Panel.
        public ManagedAccessControl()
        {
            PoolGetConnStatus.GetInstance();                    // Lanza el thread de actualizacion de connStatusgeneral
            PoolGetConnStatus.GetInstance().addRefCount();      // Agrega un conteo de referencia

            PoolGetAcceso.GetInstance();                        // Idem get accesos
            PoolGetAcceso.GetInstance().addRefCount();

            PoolGetAlarm.GetInstance();                         // Idem get Alarmas
            PoolGetAlarm.GetInstance().addRefCount();

            PoolSetAcceso.GetInstance();
            PoolSetAcceso.GetInstance().addRefCount();          // Idem setAccesos

            PoolSetAlarma.GetInstance();                        // Idem SetAlarmas
            PoolSetAlarma.GetInstance().addRefCount();
        }
        public string pollAlutrackForAlarm(int v_panelID, int v_serialnum)
        {
            string LNLPanelID = v_panelID.ToString();
            string orgID      = Helpers.GetInstance().MainOrgID.ToString();

            try
            {
                string datosAlarma = PoolGetAlarm.GetInstance().GetAlarm(int.Parse(LNLPanelID));
                if (!String.IsNullOrEmpty(datosAlarma))
                {
                    Helpers.GetInstance().DoLog("Datos de Alarma de PanelID=" + LNLPanelID + "=" + datosAlarma);
                }
                return(datosAlarma);
            }
            catch (Exception ex)
            {
                Helpers.GetInstance().DoLog("EXCEPCION en pollAlutrackForAlarm: " + ex.Message);
                return("FAIL");
            }
        }
        void enviarListaSetAlarmas()
        {
            Helpers.GetInstance().DoLog("Comienza Task de envio de SET Alarmas...");

            while (!finalizarPoolSetAlarmas.WaitOne(2000))
            {
                Helpers.GetInstance().DoLog("Esperando datos de Alarmas...");
                continuarPoolSet.WaitOne();                                                    // Espera que haya datos...
                continuarPoolSet.Reset();
                Helpers.GetInstance().DoLog("Hay datos de Alarmas encolados");

                if (!finalizarPoolSetAlarmas.WaitOne(0))
                {
                    try
                    {
                        if (listaAlarmasIDSerials != null)
                        {
                            List <AlarmaIDSerial> listaToSend = new List <AlarmaIDSerial>();
                            lock (listaAlarmasIDSerials)
                            {
                                while (listaAlarmasIDSerials.Any())
                                {
                                    AlarmaIDSerial IDS = listaAlarmasIDSerials.Dequeue();

                                    listaToSend.Add(IDS);
                                }
                            }

                            if (listaToSend.Count > 0)
                            {
                                //string errDesc = "";
                                //int errCode = -1;
                                //WebServiceAPI.GetInstance().AssignSerialnumsAlarmas(listaToSend, out errDesc, out errCode);

                                string errDesc = "";
                                int    errCode = -1;
                                bool   done    = false;
                                while (!done && !finalizarPoolSetAlarmas.WaitOne(0))
                                {
                                    WebServiceAPI.GetInstance().AssignSerialnumsAlarmas(listaToSend, out errDesc, out errCode);
                                    if (errCode == (int)StatusCode.OK)
                                    {
                                        done = true;
                                    }
                                    else
                                    {
                                        Helpers.GetInstance().DoLog("Error al enviar serials de Alarmas: " + listaToSend.ToString() + " " + errDesc);
                                        Thread.Sleep(1000);
                                    }
                                }

                                Helpers.GetInstance().DoLog("Hecha la asignacion de serialnums en Alarmas.");

                                PoolGetAlarm.GetInstance().ContinuarPoolGet();        // si ya llegaron todos los envios.

                                //Helpers.GetInstance().DoLog("Hizo ContinuarPool de GetAlarm()");
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Helpers.GetInstance().DoLog("EXCEPCION en enviarListaSetAlarmas:" + ex.Message);
                    }
                }
            }

            Helpers.GetInstance().DoLog("Finaliza Thread de actualizacion de SetAlarmas");
        }