4
0
mirror of https://github.com/cwinfo/matterbridge.git synced 2025-07-14 22:29:05 +00:00

Add wait option for populateUsers/Channels (slack) Fixes #579 (#653)

When setting wait to true, we wait until the populating isn't in progress anymore.
This is used on startup connections where we really need the initial information
which could take a long time on big servers.
This commit is contained in:
Wim
2018-12-15 23:11:03 +01:00
committed by GitHub
parent 192fe89789
commit 53c86702a3
3 changed files with 16 additions and 10 deletions

View File

@ -83,15 +83,18 @@ func (b *Bslack) populateUser(userID string) {
b.usersMutex.Unlock()
}
func (b *Bslack) populateUsers() {
func (b *Bslack) populateUsers(wait bool) {
b.refreshMutex.Lock()
if time.Now().Before(b.earliestUserRefresh) || b.refreshInProgress {
if !wait && (time.Now().Before(b.earliestUserRefresh) || b.refreshInProgress) {
b.Log.Debugf("Not refreshing user list as it was done less than %v ago.",
minimumRefreshInterval)
b.refreshMutex.Unlock()
return
}
for b.refreshInProgress {
time.Sleep(time.Second)
}
b.refreshInProgress = true
b.refreshMutex.Unlock()
@ -127,14 +130,17 @@ func (b *Bslack) populateUsers() {
b.refreshInProgress = false
}
func (b *Bslack) populateChannels() {
func (b *Bslack) populateChannels(wait bool) {
b.refreshMutex.Lock()
if time.Now().Before(b.earliestChannelRefresh) || b.refreshInProgress {
if !wait && (time.Now().Before(b.earliestChannelRefresh) || b.refreshInProgress) {
b.Log.Debugf("Not refreshing channel list as it was done less than %v seconds ago.",
minimumRefreshInterval)
b.refreshMutex.Unlock()
return
}
for b.refreshInProgress {
time.Sleep(time.Second)
}
b.refreshInProgress = true
b.refreshMutex.Unlock()