mirror of https://github.com/gogits/gogs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
526 B
39 lines
526 B
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) |
|
}
|
|
|