Beispiel #1
0
        /// <summary>
        /// Overridden to create DOM nodes from the decoded TLV.
        /// In derived classes, override the OnNewContainer(EmberNode)
        /// overload.
        /// </summary>
        protected override sealed void OnNewContainer()
        {
            Debug.Assert(_currentNode == null || _currentNode is EmberContainer);

            var container = EmberNode.FromReader(this, _application);

            Debug.Assert(container != null);

            if (IsRootReady)
            {
                Debug.Assert(_rootNode != null);
                Debug.Assert(_currentNode == null);

                _rootNode   = null;
                IsRootReady = false;
            }

            if (_rootNode == null)
            {
                Debug.Assert(_currentNode == null);

                _rootNode = container;
            }
            else
            {
                Debug.Assert(_currentNode != null);

                _currentNode.InsertChildNode(container);
            }

            _currentNode = container;

            OnNewContainer(container);
        }
Beispiel #2
0
        /// <summary>
        /// Overridden to create DOM nodes from the decoded TLV.
        /// In derived classes, override the OnItemReady(EmberNode)
        /// overload.
        /// </summary>
        protected override sealed void OnItemReady()
        {
            Debug.Assert(_rootNode != null);
            Debug.Assert(_currentNode != null);

            if (IsContainer)
            {
                EmberNode readyNode;

                if (_currentNode == _rootNode)
                {
                    IsRootReady = true;

                    OnRootReady(new RootReadyArgs(_currentNode));

                    readyNode    = _currentNode;
                    _currentNode = null;
                }
                else
                {
                    readyNode    = _currentNode;
                    _currentNode = _currentNode.Parent;
                }

                RaiseItemReady(readyNode);
            }
            else
            {
                var node = EmberNode.FromReader(this, _application);

                if (node != null)
                {
                    _currentNode.InsertChildNode(node);

                    RaiseItemReady(node);
                }
            }
        }