示例#1
0
        public bool ItemStop(Item cItem)
        {
            bool bRetVal    = false;
            Item cItemLocal = null;

            try
            {
                if (0 < Client.nID)
                {
                    if (null != (cItemLocal = GarbageCollector.ItemGet(cItem)))
                    {
                        (new Logger()).WriteDebug2("stop: " + cItemLocal.ToString());
                        cItemLocal.Stop();
                        bRetVal = true;
                    }
                    else
                    {
                        (new Logger()).WriteError("item:stop: указанный элемент не зарегистрирован [item:" + cItem.GetHashCode() + "]");
                    }
                }
                else
                {
                    (new Logger()).WriteError("item:stop: не инициирован механизм регистрации клиента");
                }
            }
            catch (Exception ex)
            {
                if (null != cItemLocal)
                {
                    cItemLocal.eStatus = Item.Status.Error;
                }
                (new Logger()).WriteError(ex);
            }
            return(bRetVal);
        }
示例#2
0
        public bool ItemDelete(Item cItem)
        {
            bool bRetVal = false;

            try
            {
                if (0 < Client.nID)
                {
                    Item cItemLocal = GarbageCollector.ItemGet(cItem);
                    if (null != cItemLocal)
                    {
                        (new Logger()).WriteDebug2("delete: " + cItemLocal.ToString());
                        GarbageCollector.ItemDelete(cItemLocal);
                        bRetVal = true;
                    }
                    else
                    {
                        (new Logger()).WriteError("item:delete: указанный элемент не зарегистрирован [item:" + cItem.GetHashCode() + "]");
                    }
                }
                else
                {
                    (new Logger()).WriteError("item:delete: не инициирован механизм регистрации клиента");
                }
            }
            catch (Exception ex)
            {
                (new Logger()).WriteError(ex);
            }
            return(bRetVal);
        }
示例#3
0
        public Item ItemCreate(string sPreset, string sFile, UserReplacement[] aUserReplacements)          // aUserReplacements  может быть null, nAssetsID  может быть 0
        {
            Item cRetVal = null;

            try
            {
                if (0 < Client.nID)
                {
                    string sInfo = "Template, " + sFile;
                    if (null != (cRetVal = GarbageCollector.ItemGet(sInfo)) && cRetVal.eStatus != Item.Status.Stopped && cRetVal.eStatus != Item.Status.Error)
                    {
                        return(cRetVal);
                    }
                    cRetVal         = new Template(sFile, (null == aUserReplacements ? null : aUserReplacements.ToDictionary(row => row.sKey, row => row.sValue)));
                    cRetVal.sPreset = sPreset;
                    cRetVal.sInfo   = sInfo;
                    GarbageCollector.ItemAdd(cRetVal);
                    (new Logger()).WriteDebug3("create: " + sInfo + " hash:[" + cRetVal.GetHashCode() + "]");
                }
                else
                {
                    (new Logger()).WriteError("create: не инициирован механизм регистрации клиента");
                }
            }
            catch (Exception ex)
            {
                (new Logger()).WriteError(ex);
            }
            return(cRetVal);
        }
示例#4
0
        public bool AddTextToRoll(string sTemplateInfo, string sText)
        {
            Item     cItem = GarbageCollector.ItemGet(sTemplateInfo);
            Template cTemplate;

            if (null != cItem && cItem is Template && (cTemplate = (Template)cItem).eStatus == Item.Status.Started)
            {
                return(((Template)cItem).AddTextToRoll(sText));
            }
            return(false);
        }
示例#5
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());
        }