/// <summary>
        /// Recibe un pedido de eventos desde un Panel LENEL
        /// </summary>
        public string pollAlutrackForEvent(string v_panelName, int v_panelID, int v_OrgID)
        {
            //Helpers.GetInstance().updateConfigurationVariables();

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

            string deviceID   = v_panelID.ToString();
            string deviceName = v_panelName;
            string orgID      = Helpers.GetInstance().MainOrgID.ToString();       // No toma la de la llamada


            try
            {
                string datosAccesos = PoolGetAcceso.GetInstance().GetAccesos(deviceName);
                if (!String.IsNullOrEmpty(datosAccesos))
                {
                    Helpers.GetInstance().DoLog("GetAccesos de " + v_panelName + "=" + datosAccesos);
                }

                return(datosAccesos);
            }
            catch (Exception ex)
            {
                Helpers.GetInstance().DoLog("EXCEPCION en pollAlutrackForEvent de VZone: " + ex.Message);
                return("FAIL");
            }
        }
        // Se llama en el destructor del Panel de la zona.
        public void deleteZone(int PanelID)
        {
            PoolGetConnStatus.GetInstance().subRefCount();
            //PoolGetAlarm.GetInstance().subRefCount();
            PoolGetAcceso.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.WaitOne();
                try
                {
                    string errDesc = "";
                    int    errCode = (int)StatusCode.NOT_IMPLEMENTED;

                    if (!WebServiceAPI.GetInstance().ExistePanelEnOnGuard(PanelID.ToString(), out errDesc, out errCode))
                    {
                        WebServiceAPI.GetInstance().DeleteZone(PanelID.ToString(), orgID, out errDesc, out errCode);
                    }
                }
                catch (Exception) { }
            }
            catch (Exception) { }
        }
        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 PoolGetAcceso GetInstance()
        {
            if (_instance == null)
            {
                _instance = new PoolGetAcceso();
            }
            return(_instance);
        }
 public void subRefCount()
 {
     _refCount--;
     if (_refCount == 0)
     {
         Stop();                                 // Detiene el thread de verificacion
         Thread.Sleep(200);
         _instance = null;                       // Hace null la referencia para que un nuevo GetInstance lance todo de nuevo
         Helpers.GetInstance().DoLog("Instance de PoolGetAcceso es NULL");
     }
     Helpers.GetInstance().DoLog("Resto refCount de PoolGetAcceso =" + _refCount);
 }
        public static List <string> ListaPanelNames = new List <string>();          // Lista de todos los PanelNames que levanta este CommServer..

        public VirtualGateManagedTranslator()
        {
            PoolGetConnStatus.GetInstance();                    // Lanza el thread de actualizacion de ConnStatus
            PoolGetConnStatus.GetInstance().addRefCount();

            PoolGetAcceso.GetInstance();                        // Lanza el thread de actualizacion de Alarmas
            PoolGetAcceso.GetInstance().addRefCount();

            //PoolGetAlarm.GetInstance();                         // Lanza el thread de actualizacion de Accesos
            //PoolGetAlarm.GetInstance().addRefCount();

            PoolSetAcceso.GetInstance();
            PoolSetAcceso.GetInstance().addRefCount();

            //PoolSetAlarma.GetInstance();

            //PoolSetAlarma.GetInstance().addRefCount();
        }
        public void sendIDSerials(string serialsIDs)
        {
            try
            {
                PoolSetAcceso.GetInstance().addSetAcceso(serialsIDs);

                Helpers.GetInstance().DoLog("Hecho addAcceso de: " + serialsIDs);

                if (PoolGetAcceso.GetInstance().isEmpty())
                {
                    //Helpers.GetInstance().DoLog("isEmpty dio True");
                    PoolSetAcceso.GetInstance().ContinuarPool();        // OK darlos de alta en AlutelMobility
                }
                //else
                //    Helpers.GetInstance().DoLog("isEmpty dio False");
            }
            catch (Exception ex)
            {
                Helpers.GetInstance().DoLog("EXCEPCION en SendIDSerials: " + ex.Message);
            }
        }
Exemplo n.º 7
0
        void enviarListaSetAccesos()
        {
            Helpers.GetInstance().DoLog("Comienza Task de envio de SET Accesos...");

            while (!finalizarPoolSetAccesos.WaitOne(2000))
            {
                //Helpers.GetInstance().DoLog("Esperando datos de accesos de VZones");
                continuarPool.WaitOne();                                // Espera que haya datos...
                continuarPool.Reset();

                //Helpers.GetInstance().DoLog("Hay datos encolados");
                if (!finalizarPoolSetAccesos.WaitOne(0))
                {
                    try
                    {
                        if (listaIDSerials != null)
                        {
                            string IDSerialsToSend = "";
                            lock (listaIDSerials)
                            {
                                while (listaIDSerials.Any())
                                {
                                    string IDS = listaIDSerials.Dequeue();
                                    if (!String.IsNullOrEmpty(IDS))
                                    {
                                        IDSerialsToSend += IDS.TrimEnd('|') + "|";
                                    }
                                }
                            }

                            if (!String.IsNullOrEmpty(IDSerialsToSend))
                            {
                                string errDesc = "";
                                int    errCode = -1;
                                bool   done    = false;
                                while (!done && !finalizarPoolSetAccesos.WaitOne(0))
                                {
                                    Helpers.GetInstance().DoLog("Va a asignarSerialNums: " + IDSerialsToSend);
                                    WebServiceAPI.GetInstance().AssignSerialNums(IDSerialsToSend, out errDesc, out errCode);
                                    if (errCode == (int)StatusCode.OK)
                                    {
                                        done = true;
                                    }
                                    else
                                    {
                                        Helpers.GetInstance().DoLog("Error al enviar serials de accesos: " + IDSerialsToSend + " " + errDesc);
                                        Thread.Sleep(1000);
                                    }
                                }
                                if (done)
                                {
                                    Helpers.GetInstance().DoLog("Enviados los IDSerials:" + IDSerialsToSend);
                                }

                                PoolGetAcceso.GetInstance().ContinuarPool();        // Como la llamada es bloqueante, si llega aca quiere decir que los envio todos.
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Helpers.GetInstance().DoLog("EXCEPCION en enviarListaSetAccesos:" + ex.Message);
                    }
                }
            }

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