Ejemplo n.º 1
0
        public static KeyContainer Create(XElement element, KeyContainer parent = null)
        {
            string       value        = element.Attribute("Name").Value;
            KeyContainer keyContainer = new KeyContainer(value, parent);

            if (parent != null)
            {
                parent.SubKeys[value] = keyContainer;
            }
            List <XElement> list = new List <XElement>();

            if (element.HasElements)
            {
                foreach (XElement xelement in element.Elements())
                {
                    string localName = xelement.Name.LocalName;
                    if (Utils.IsEqual(localName, "Key", StringComparison.OrdinalIgnoreCase))
                    {
                        list.Add(xelement);
                    }
                    else if (Utils.IsEqual(localName, "Value", StringComparison.OrdinalIgnoreCase))
                    {
                        string        value2 = xelement.Attribute("Name").Value;
                        PropertyValue value3 = PropertyValue.Parse(xelement);
                        keyContainer.Properties[value2] = value3;
                    }
                }
            }
            foreach (XElement element2 in list)
            {
                KeyContainer.Create(element2, keyContainer);
            }
            return(keyContainer);
        }
Ejemplo n.º 2
0
        public void ApplySnapshotFromXElement(string keyName, int lastInstanceExecuted, XElement rootElement)
        {
            keyName = this.NormalizeKeyName(keyName);
            KeyContainer parent = null;

            this.locker.WithWriteLock(delegate()
            {
                ExTraceGlobals.StoreWriteTracer.TraceDebug <string, int, string>((long)this.identityHash, "{0}: [1] Entering ApplySnapshotFromXElement (Key: {2})", this.identity, this.LastInstanceExecuted, keyName);
                if (!LocalMemoryStore.IsRootKeyName(keyName))
                {
                    KeyContainer keyContainer = this.FindContainer(keyName, true);
                    if (keyContainer != null)
                    {
                        parent = keyContainer.Parent;
                        parent.SubKeys.Remove(keyContainer.Name);
                    }
                }
                string keyLastPart = this.GetKeyLastPart(keyName);
                rootElement.SetAttributeValue("Name", keyLastPart);
                KeyContainer keyContainer2 = KeyContainer.Create(rootElement, parent);
                if (parent == null)
                {
                    this.rootContainer = keyContainer2;
                }
                this.SetStats(new int?(lastInstanceExecuted));
                ExTraceGlobals.StoreWriteTracer.TraceDebug <string, int>((long)this.identityHash, "{0}: [1] Exiting ApplySnapshotFromXElement", this.identity, lastInstanceExecuted);
            });
        }