public Xevent()

in DiagManager/DiagClasses/XEvent.cs [67:123]


        public Xevent(string EventElement)
        {
            //"<event package=\"sqlserver\" name=\"parallel_scan_range_returned\" version=\"11\" general=\"false\" detail=\"false\" replay=\"false\" />"
            TextReader reader = new StringReader("<root>" + EventElement + "</root>");
            XPathDocument doc = new XPathDocument(reader);
            XPathNavigator rootnav = doc.CreateNavigator();
            XPathNodeIterator iterEvent = rootnav.Select("/root/event");

            int counter = 0;
            while (iterEvent.MoveNext())
            {

                XPathNavigator eventNav = iterEvent.Current;
                this.EnabledSQLVersion = Convert.ToInt32(eventNav.GetAttribute("version", ""));
                this.Name = iterEvent.Current.GetAttribute("name", "");

                foreach (Scenario evtTemp in XMgr.GlobalEventTemplateList)
                {
                    string templateName = evtTemp.Name;
                    bool tempEnabled = Convert.ToBoolean(iterEvent.Current.GetAttribute(evtTemp.Name, ""));
                    if (tempEnabled)
                    {
                        EventOnlyTemplateList.Add(evtTemp);
                    }
                }

                this.Package = iterEvent.Current.GetAttribute("package", "");
                // read and populate the field elements from eventfields section
                TextReader readerFields = new StringReader("<root>" + EventElement + "</root>");
                XPathDocument docFields = new XPathDocument(readerFields);
                XPathNavigator navFields = docFields.CreateNavigator();
                XPathNodeIterator iterFields = navFields.Select("//eventfields/field");
                while (iterFields.MoveNext())
                {
                    XPathNavigator navField = iterFields.Current;
                    EventFieldList.Add(new EventField(navField.OuterXml));
                }
                //read and poulate the action elements from eventactions section
                TextReader readerActions = new StringReader("<root>" + EventElement + "</root>");
                XPathDocument docActions = new XPathDocument(readerActions);
                XPathNavigator navActions = docActions.CreateNavigator();
                XPathNodeIterator iterActions = navActions.Select("//eventactions/action");
                while (iterActions.MoveNext())
                {
                    XPathNavigator navAction = iterActions.Current;
                    EventActionList.Add(new EventAction(navAction.OuterXml));
                }

                counter++;

            }

            if (counter != 1)
            {
                throw new ArgumentException("The XML passed for XEvent is not valid and should only contain one record");
            }
        }