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