Пример #1
0
        virtual public string Init(ulong nClientBrowserID, string sVersionOfSCR)
        {
            (new Logger()).WriteWarning("________________INIT   begin");
            if (_sVersionOfXapScr == null)
            {
                _sVersionOfXapScr = helpers.replica.scr.XAP.GetVersionOfDll(@"ClientBin\scr.xap", @"ClientBin\scr.dll");
            }
            if (sVersionOfSCR != _sVersionOfXapScr)
            {
                (new Logger()).WriteError("init. client's version doesn't match [client=" + sVersionOfSCR + "][server=" + _sVersionOfXapScr + "]");
                return("не совпадают версии SCR [client=" + sVersionOfSCR + "][server=" + _sVersionOfXapScr + "]");
            }

            string sRetVal = "";

            (new Logger()).WriteDebug2("init [browser:" + nClientBrowserID + "][client:" + Client.nID + "][last:" + Client.dtPing + "][client_ver=" + sVersionOfSCR + "]");
#if DEBUG
            if (true)
#else
            if (DateTime.Now > Client.dtPing.AddSeconds(20) || IsClientCurrent(nClientBrowserID))
#endif
            {
                ClientInit(nClientBrowserID);
            }
            //else if (null == Session["ClientID"])
            //    Session["ClientID"] = Client.nID;
            //else if (!IsClientCurrent(nClientBrowserID))
            else
            {
                return((Session["ClientID"] ?? "null") + ":" + Client.nCurrentClientBrowserID + ":" + nClientBrowserID + ":" + " клиент управления автоматизацией аппаратно-студийного блока уже запущен в другом окне браузера или на другой рабочей станции");
            }

            if (!GarbageCollector.IsRunning())
            {
                try
                {
                    (new Logger()).WriteDebug2("init:text");
                    Template cText = new Template("");                     // взмолаживание девайса
                    cText.TextCreate(".");
                    cText.Prepare();
                    cText.Start();
                    System.Threading.Thread.Sleep(1000);
                    cText.Stop();

                    (new Logger()).WriteDebug2("init:discom");
                    //(new userspace.Helper()).DisComInit(); // взмолаживание сридов для просчета чата.  // чат считается в устройстве из префов, так что это не всегда DisCom
                }
                catch (Exception ex)
                {
                    sRetVal = "не пройдена инициализация сервиса";
                    (new Logger()).WriteError(ex);
                }
                if ("" == sRetVal)
                {
                    GarbageCollector.Run();
                }
            }
            (new Logger()).WriteWarning("________________INIT   end   " + sRetVal);
            return(sRetVal);
        }
Пример #2
0
        public Item[] ItemsUpdate(Item[] aItems)
        {
            if (null == Session["ClientID"])
            {
                (new Logger()).WriteError(new Exception("ItemsUpdate(): Попытка обращения с непроинициализированного клиента"));
                return(null);
            }
            Client.dtPing = DateTime.Now;
            List <Item> aRetVal = new List <Item>();

            try
            {
                //if (DateTime.Now > _dtStatusGetLast.AddMinutes(1))
                //{
                //    _dtStatusGetLast = DateTime.Now;
                //    int nTemplCount = 0;
                //    lock (_aItems)
                //        nTemplCount = _aItems.Count(o => Client.nID == o.nClientID);
                //    (new Logger()).WriteDebug2("ingenie.asmx.cs: MyPair[] EffectStatusGet: Вошли в StatusGet, aItemIDs.Length = {" + aItemIDs.Length + "}, _ahItems[nClientID].Keys.Count = {" + nTemplCount + "}");
                //}
                if (null != aItems)
                {
                    Item cItem;
                    bool bGCRunning = GarbageCollector.IsRunning();
                    for (int nIndx = 0; aItems.Length > nIndx; nIndx++)
                    {
                        if (!bGCRunning || null == (cItem = GarbageCollector.ItemGet(aItems[nIndx])))
                        {
                            (new Logger()).WriteError("items:update: указанный элемент не зарегистрирован [item:" + aItems[nIndx].GetHashCode() + "]");
                            cItem         = aItems[nIndx];
                            cItem.eStatus = Item.Status.Error;
                        }
                        aRetVal.Add(cItem);
                    }
                }
            }
            catch (Exception ex)
            {
                (new Logger()).WriteError(ex);
            }
            return(aRetVal.ToArray());
        }