mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-03 17:42:25 -06:00 
			
		
		
		
	* start fixing up tests * fix up tests + automate with drone * fiddle with linting * messing about with drone.yml * some more fiddling * hmmm * add cache * add vendor directory * verbose * ci updates * update some little things * update sig
		
			
				
	
	
		
			33 lines
		
	
	
	
		
			642 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			642 B
		
	
	
	
		
			Go
		
	
	
	
	
	
//+build !go1.9
 | 
						|
 | 
						|
package concurrent
 | 
						|
 | 
						|
import "sync"
 | 
						|
 | 
						|
// Map implements a thread safe map for go version below 1.9 using mutex
 | 
						|
type Map struct {
 | 
						|
	lock sync.RWMutex
 | 
						|
	data map[interface{}]interface{}
 | 
						|
}
 | 
						|
 | 
						|
// NewMap creates a thread safe map
 | 
						|
func NewMap() *Map {
 | 
						|
	return &Map{
 | 
						|
		data: make(map[interface{}]interface{}, 32),
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// Load is same as sync.Map Load
 | 
						|
func (m *Map) Load(key interface{}) (elem interface{}, found bool) {
 | 
						|
	m.lock.RLock()
 | 
						|
	elem, found = m.data[key]
 | 
						|
	m.lock.RUnlock()
 | 
						|
	return
 | 
						|
}
 | 
						|
 | 
						|
// Load is same as sync.Map Store
 | 
						|
func (m *Map) Store(key interface{}, elem interface{}) {
 | 
						|
	m.lock.Lock()
 | 
						|
	m.data[key] = elem
 | 
						|
	m.lock.Unlock()
 | 
						|
}
 |