mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			526 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			526 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package pam
 | 
						|
 | 
						|
import "sync"
 | 
						|
 | 
						|
var cb struct {
 | 
						|
	sync.Mutex
 | 
						|
	m map[int]interface{}
 | 
						|
	c int
 | 
						|
}
 | 
						|
 | 
						|
func init() {
 | 
						|
	cb.m = make(map[int]interface{})
 | 
						|
}
 | 
						|
 | 
						|
func cbAdd(v interface{}) int {
 | 
						|
	cb.Lock()
 | 
						|
	defer cb.Unlock()
 | 
						|
	cb.c++
 | 
						|
	cb.m[cb.c] = v
 | 
						|
	return cb.c
 | 
						|
}
 | 
						|
 | 
						|
func cbGet(c int) interface{} {
 | 
						|
	cb.Lock()
 | 
						|
	defer cb.Unlock()
 | 
						|
	if v, ok := cb.m[c]; ok {
 | 
						|
		return v
 | 
						|
	}
 | 
						|
	panic("Callback pointer not found")
 | 
						|
}
 | 
						|
 | 
						|
func cbDelete(c int) {
 | 
						|
	cb.Lock()
 | 
						|
	defer cb.Unlock()
 | 
						|
	if _, ok := cb.m[c]; !ok {
 | 
						|
		panic("Callback pointer not found")
 | 
						|
	}
 | 
						|
	delete(cb.m, c)
 | 
						|
}
 |