diff options
author | Wim <wim@42.be> | 2018-12-15 23:11:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-15 23:11:03 +0100 |
commit | 53c86702a35b3f9d12993d613d17b74ebb99258d (patch) | |
tree | 8bfdc2e115ed1f99096733f70186edd418a2e9dd /bridge/slack/helpers.go | |
parent | 192fe89789cb8d35b0be990b7fb9eb4ae2be9d60 (diff) | |
download | matterbridge-msglm-53c86702a35b3f9d12993d613d17b74ebb99258d.tar.gz matterbridge-msglm-53c86702a35b3f9d12993d613d17b74ebb99258d.tar.bz2 matterbridge-msglm-53c86702a35b3f9d12993d613d17b74ebb99258d.zip |
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.
Diffstat (limited to 'bridge/slack/helpers.go')
-rw-r--r-- | bridge/slack/helpers.go | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/bridge/slack/helpers.go b/bridge/slack/helpers.go index 6f049561..fb7a25d5 100644 --- a/bridge/slack/helpers.go +++ b/bridge/slack/helpers.go @@ -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() |