SYMBOL INDEX (109 symbols across 12 files) FILE: hub.go constant AlertTopic (line 5) | AlertTopic = "hub.subscription.messageslost" type Hub (line 11) | type Hub struct method Publish (line 26) | func (h *Hub) Publish(m Message) { method With (line 38) | func (h *Hub) With(f Fields) *Hub { method Subscribe (line 57) | func (h *Hub) Subscribe(cap int, topics ...string) Subscription { method NonBlockingSubscribe (line 63) | func (h *Hub) NonBlockingSubscribe(cap int, topics ...string) Subscrip... method Unsubscribe (line 75) | func (h *Hub) Unsubscribe(sub Subscription) { method Close (line 81) | func (h *Hub) Close() { method alert (line 92) | func (h *Hub) alert(missed int, topics []string) { function New (line 18) | func New() *Hub { FILE: hub_benchmark_test.go function BenchmarkPublishOnNonBlockingSubscribers (line 10) | func BenchmarkPublishOnNonBlockingSubscribers(b *testing.B) { function BenchmarkPublishOnBlockingSubscribers (line 14) | func BenchmarkPublishOnBlockingSubscribers(b *testing.B) { function runBenchmark (line 18) | func runBenchmark(b *testing.B, numItems, numThreads, numSubscribers int... function createSubscribers (line 47) | func createSubscribers(h *Hub, qtd int, blocking bool) []Subscription { function processSubscriptionsForBench (line 66) | func processSubscriptionsForBench(subs []Subscription, wg *sync.WaitGrou... FILE: hub_example_test.go function ExampleHub (line 10) | func ExampleHub() { FILE: hub_test.go type messageCounter (line 11) | type messageCounter struct method count (line 164) | func (ms *messageCounter) count() int64 { method reset (line 168) | func (ms *messageCounter) reset() { function TestHub (line 17) | func TestHub(t *testing.T) { function TestNonBlockingSubscriberShouldAlertIfLoseMessages (line 103) | func TestNonBlockingSubscriberShouldAlertIfLoseMessages(t *testing.T) { function TestWith (line 120) | func TestWith(t *testing.T) { function newMessageCounter (line 153) | func newMessageCounter(s Subscription) *messageCounter { FILE: matching.go constant delimiter (line 19) | delimiter = "." constant wildcard (line 20) | wildcard = "*" type Subscription (line 25) | type Subscription struct type subscriber (line 33) | type subscriber interface type matcher (line 47) | type matcher interface FILE: matching_cstrie.go type iNode (line 24) | type iNode struct type mainNode (line 28) | type mainNode struct type cNode (line 33) | type cNode struct method inserted (line 58) | func (c *cNode) inserted(words []string, sub subscriber) *cNode { method updated (line 80) | func (c *cNode) updated(word string, sub subscriber) *cNode { method updatedBranch (line 104) | func (c *cNode) updatedBranch(word string, in *iNode, br *branch) *cNo... method removed (line 117) | func (c *cNode) removed(word string, sub subscriber) *cNode { method getBranches (line 140) | func (c *cNode) getBranches(word string) (*branch, *branch) { function newCNode (line 38) | func newCNode(words []string, sub subscriber) *cNode { type branch (line 144) | type branch struct method updated (line 150) | func (b *branch) updated(in *iNode) *branch { method removed (line 160) | func (b *branch) removed(sub subscriber) *branch { method subscribers (line 172) | func (b *branch) subscribers() []subscriber { type tNode (line 184) | type tNode struct type csTrieMatcher (line 186) | type csTrieMatcher struct method Subscribe (line 196) | func (c *csTrieMatcher) Subscribe(topics []string, sub subscriber) Sub... method iinsert (line 212) | func (c *csTrieMatcher) iinsert(i, parent *iNode, words []string, sub ... method Unsubscribe (line 267) | func (c *csTrieMatcher) Unsubscribe(sub Subscription) { method iremove (line 281) | func (c *csTrieMatcher) iremove(i, parent, parentsParent *iNode, words... method Lookup (line 345) | func (c *csTrieMatcher) Lookup(topic string) []subscriber { method ilookup (line 363) | func (c *csTrieMatcher) ilookup(i, parent *iNode, words []string) ([]s... method bLookup (line 416) | func (c *csTrieMatcher) bLookup(i *iNode, b *branch, words []string) (... method Subscriptions (line 434) | func (c *csTrieMatcher) Subscriptions() []Subscription { method isubscriptions (line 448) | func (c *csTrieMatcher) isubscriptions(i, parent *iNode, words []strin... method toContracted (line 492) | func (c *csTrieMatcher) toContracted(cn *cNode, parent *iNode) *mainNo... function newCSTrieMatcher (line 190) | func newCSTrieMatcher() matcher { function clean (line 502) | func clean(i *iNode) { function cleanParent (line 516) | func cleanParent(i, parent, parentsParent *iNode, c *csTrieMatcher, word... function contract (line 541) | func contract(parentsParent, parent *iNode, c *csTrieMatcher, pMain *mai... function toCompressed (line 583) | func toCompressed(cn *cNode) *mainNode { function prunable (line 597) | func prunable(br *branch) bool { FILE: matching_cstrie_test.go function TestCSTrieMatcher (line 24) | func TestCSTrieMatcher(t *testing.T) { function BenchmarkCSTrieMatcherSubscribe (line 63) | func BenchmarkCSTrieMatcherSubscribe(b *testing.B) { function BenchmarkCSTrieMatcherUnsubscribe (line 78) | func BenchmarkCSTrieMatcherUnsubscribe(b *testing.B) { function BenchmarkCSTrieMatcherLookup (line 93) | func BenchmarkCSTrieMatcherLookup(b *testing.B) { function BenchmarkCSTrieMatcherSubscribeCold (line 108) | func BenchmarkCSTrieMatcherSubscribeCold(b *testing.B) { function BenchmarkCSTrieMatcherUnsubscribeCold (line 121) | func BenchmarkCSTrieMatcherUnsubscribeCold(b *testing.B) { function BenchmarkCSTrieMatcherLookupCold (line 135) | func BenchmarkCSTrieMatcherLookupCold(b *testing.B) { function BenchmarkMultithreaded1Thread5050CSTrie (line 149) | func BenchmarkMultithreaded1Thread5050CSTrie(b *testing.B) { function BenchmarkMultithreaded2Thread5050CSTrie (line 154) | func BenchmarkMultithreaded2Thread5050CSTrie(b *testing.B) { function BenchmarkMultithreaded4Thread5050CSTrie (line 159) | func BenchmarkMultithreaded4Thread5050CSTrie(b *testing.B) { function BenchmarkMultithreaded8Thread5050CSTrie (line 164) | func BenchmarkMultithreaded8Thread5050CSTrie(b *testing.B) { function BenchmarkMultithreaded12Thread5050CSTrie (line 169) | func BenchmarkMultithreaded12Thread5050CSTrie(b *testing.B) { function BenchmarkMultithreaded16Thread5050CSTrie (line 174) | func BenchmarkMultithreaded16Thread5050CSTrie(b *testing.B) { function BenchmarkMultithreaded1Thread9010CSTrie (line 179) | func BenchmarkMultithreaded1Thread9010CSTrie(b *testing.B) { function BenchmarkMultithreaded2Thread9010CSTrie (line 184) | func BenchmarkMultithreaded2Thread9010CSTrie(b *testing.B) { function BenchmarkMultithreaded4Thread9010CSTrie (line 189) | func BenchmarkMultithreaded4Thread9010CSTrie(b *testing.B) { function BenchmarkMultithreaded8Thread9010CSTrie (line 194) | func BenchmarkMultithreaded8Thread9010CSTrie(b *testing.B) { function BenchmarkMultithreaded12Thread9010CSTrie (line 199) | func BenchmarkMultithreaded12Thread9010CSTrie(b *testing.B) { function BenchmarkMultithreaded16Thread9010CSTrie (line 204) | func BenchmarkMultithreaded16Thread9010CSTrie(b *testing.B) { FILE: message.go type Fields (line 11) | type Fields method String (line 27) | func (f Fields) String() string { type Message (line 15) | type Message struct method Topic (line 23) | func (m *Message) Topic() string { FILE: message_test.go function TestFields_String (line 5) | func TestFields_String(t *testing.T) { FILE: subscriber.go type alertFunc (line 8) | type alertFunc type nonBlockingSubscriber (line 10) | type nonBlockingSubscriber struct method Set (line 37) | func (s *nonBlockingSubscriber) Set(msg Message) { method Ch (line 46) | func (s *nonBlockingSubscriber) Ch() <-chan Message { method Close (line 51) | func (s *nonBlockingSubscriber) Close() { type blockingSubscriber (line 16) | type blockingSubscriber struct method Set (line 69) | func (s *blockingSubscriber) Set(msg Message) { method Ch (line 74) | func (s *blockingSubscriber) Ch() <-chan Message { method Close (line 79) | func (s *blockingSubscriber) Close() { function newNonBlockingSubscriber (line 25) | func newNonBlockingSubscriber(cap int, alerter alertFunc) *nonBlockingSu... function newBlockingSubscriber (line 58) | func newBlockingSubscriber(cap int) *blockingSubscriber { FILE: throughput_test.go constant numSubs (line 15) | numSubs = 1000 constant numMsgs (line 16) | numMsgs = 1000000 constant numPublishers (line 17) | numPublishers = 4 function setupTopics (line 27) | func setupTopics() { function TestThroughput (line 49) | func TestThroughput(t *testing.T) { FILE: utils_test.go type discardSubscriber (line 27) | type discardSubscriber method Set (line 29) | func (d discardSubscriber) Set(msg Message) {} method Ch (line 30) | func (d discardSubscriber) Ch() <-chan Message { return make(chan Mess... method Close (line 31) | func (d discardSubscriber) Close() {} function benchmarkMatcher (line 35) | func benchmarkMatcher(b *testing.B, numThreads int, m matcher, doSubs fu... function percentual5050 (line 70) | func percentual5050(n int) bool { function percentual9010 (line 74) | func percentual9010(n int) bool { function assertEqual (line 78) | func assertEqual(assert *assert.Assertions, expected, actual []subscribe... function generateTopics (line 86) | func generateTopics(numThreads, numItems int) [][]string { function populateMatcher (line 103) | func populateMatcher(m matcher, topicSize int) {