diff options
Diffstat (limited to 'pkg/bst')
-rw-r--r-- | pkg/bst/bst.go | 16 | ||||
-rw-r--r-- | pkg/bst/interface.go | 2 |
2 files changed, 18 insertions, 0 deletions
diff --git a/pkg/bst/bst.go b/pkg/bst/bst.go index 664937ba..f8426b12 100644 --- a/pkg/bst/bst.go +++ b/pkg/bst/bst.go @@ -52,6 +52,22 @@ func (b *BST) Insert(uuid string, topic string) { } } +func (b *BST) Contains(topic string) bool { + curr := b + for curr != nil { + switch { + case topic < curr.topic: + curr = curr.left + case topic > curr.topic: + curr = curr.right + case topic == curr.topic: + return true + } + } + + return false +} + func (b *BST) Get(topic string) map[string]struct{} { curr := b for curr != nil { diff --git a/pkg/bst/interface.go b/pkg/bst/interface.go index ecf40414..95b03e11 100644 --- a/pkg/bst/interface.go +++ b/pkg/bst/interface.go @@ -8,4 +8,6 @@ type Storage interface { Remove(uuid, topic string) // Get will return all connections associated with the topic Get(topic string) map[string]struct{} + // Contains checks if the BST contains a topic + Contains(topic string) bool } |