//------------------------------------------------------------------------------------------------------------------------ void _recAdd(string[] elements, TKey key, int index) { //check if (elements == null || elements.Length == 0) { return; } //check if index is last element if (index >= elements.Length) { //add to keys Keys.Add(key); } else if (index == elements.Length - 1 && (elements[index] == "#" || elements[index] == "+")) { //add to promiscious keys PromiscuousKeys.Add(key); } else { //add on proper list MqttTopicNode <TKey> node; lock (Children) { node = Children.TryGetOrDefault(elements[index]); if (node == null) { Children.Add(elements[index], node = new MqttTopicNode <TKey>() { ParentNode = this, TopicNodeId = elements[index] }); } } //continue recursion node._recAdd(elements, key, index + 1); } }
//------------------------------------------------------------------------------------------------------------------------ public int CountForKey(TKey key) { var values = InternalObject.TryGetOrDefault(key); return(values == null ? 0 : values.Count); }