5
0
mirror of https://github.com/cwinfo/matterbridge.git synced 2024-09-20 16:02:31 +00:00
matterbridge/vendor/github.com/nlopes/slack/messageID.go
2016-09-05 16:34:37 +02:00

31 lines
535 B
Go

package slack
import "sync"
// IDGenerator provides an interface for generating integer ID values.
type IDGenerator interface {
Next() int
}
// NewSafeID returns a new instance of an IDGenerator which is safe for
// concurrent use by multiple goroutines.
func NewSafeID(startID int) IDGenerator {
return &safeID{
nextID: startID,
mutex: &sync.Mutex{},
}
}
type safeID struct {
nextID int
mutex *sync.Mutex
}
func (s *safeID) Next() int {
s.mutex.Lock()
defer s.mutex.Unlock()
id := s.nextID
s.nextID++
return id
}