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); }
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()); }