//------------------------------------------------------------------------------------------------------------------------ public void Add(TKey key, TValue value) { lock (locker) { if (!InternalObject.ContainsKey(key)) { InternalObject.Add(key, new ListTS <TValue>()); } InternalObject[key].Add(value); } }
//------------------------------------------------------------------------------------------------------------------------ public bool Add(TKey key, TValue value) { lock (locker) { if (!InternalObject.ContainsKey(key)) { InternalObject.Add(key, new HashSetTS <TValue>()); } return(InternalObject[key].Add(value)); } }
//------------------------------------------------------------------------------------------------------------------------ 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); } }