mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-26 20:11:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			39 lines
		
	
	
	
		
			526 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			39 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)
 | |
| }
 |