|
|
|
@ -211,15 +211,11 @@ func newUdpPublisherMap() *udpPublishersMap { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (m *udpPublishersMap) get(addr udpPublisherAddr) *udpPublisher { |
|
|
|
func (m *udpPublishersMap) clear() { |
|
|
|
m.mutex.RLock() |
|
|
|
m.mutex.Lock() |
|
|
|
defer m.mutex.RUnlock() |
|
|
|
defer m.mutex.Unlock() |
|
|
|
|
|
|
|
|
|
|
|
el, ok := m.ma[addr] |
|
|
|
m.ma = make(map[udpPublisherAddr]*udpPublisher) |
|
|
|
if !ok { |
|
|
|
|
|
|
|
return nil |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return el |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (m *udpPublishersMap) add(addr udpPublisherAddr, pub *udpPublisher) { |
|
|
|
func (m *udpPublishersMap) add(addr udpPublisherAddr, pub *udpPublisher) { |
|
|
|
@ -236,6 +232,17 @@ func (m *udpPublishersMap) remove(addr udpPublisherAddr) { |
|
|
|
delete(m.ma, addr) |
|
|
|
delete(m.ma, addr) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func (m *udpPublishersMap) get(addr udpPublisherAddr) *udpPublisher { |
|
|
|
|
|
|
|
m.mutex.RLock() |
|
|
|
|
|
|
|
defer m.mutex.RUnlock() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
el, ok := m.ma[addr] |
|
|
|
|
|
|
|
if !ok { |
|
|
|
|
|
|
|
return nil |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return el |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
type readersMap struct { |
|
|
|
type readersMap struct { |
|
|
|
mutex sync.RWMutex |
|
|
|
mutex sync.RWMutex |
|
|
|
ma map[*client]struct{} |
|
|
|
ma map[*client]struct{} |
|
|
|
@ -247,6 +254,13 @@ func newReadersMap() *readersMap { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func (m *readersMap) clear() { |
|
|
|
|
|
|
|
m.mutex.Lock() |
|
|
|
|
|
|
|
defer m.mutex.Unlock() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m.ma = make(map[*client]struct{}) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (m *readersMap) add(reader *client) { |
|
|
|
func (m *readersMap) add(reader *client) { |
|
|
|
m.mutex.Lock() |
|
|
|
m.mutex.Lock() |
|
|
|
defer m.mutex.Unlock() |
|
|
|
defer m.mutex.Unlock() |
|
|
|
|