mirror of
https://github.com/peco/peco.git
synced 2026-09-10 07:16:29 -04:00
36 lines
615 B
Go
36 lines
615 B
Go
package peco
|
|
|
|
import "sync"
|
|
|
|
type interceptorArgs []interface{}
|
|
type interceptor struct {
|
|
m *sync.Mutex
|
|
events map[string][]interceptorArgs
|
|
}
|
|
|
|
func newInterceptor() *interceptor {
|
|
return &interceptor{
|
|
&sync.Mutex{},
|
|
make(map[string][]interceptorArgs),
|
|
}
|
|
}
|
|
|
|
func (i *interceptor) reset() {
|
|
i.m.Lock()
|
|
defer i.m.Unlock()
|
|
|
|
i.events = make(map[string][]interceptorArgs)
|
|
}
|
|
|
|
func (i *interceptor) record(name string, args []interface{}) {
|
|
i.m.Lock()
|
|
defer i.m.Unlock()
|
|
|
|
events := i.events
|
|
v, ok := events[name]
|
|
if !ok {
|
|
v = []interceptorArgs{}
|
|
}
|
|
|
|
events[name] = append(v, interceptorArgs(args))
|
|
} |