blob: 04e2396e16e92a5c0be98e2959727548cfd247b5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package proxy
import "sync"
type ChatCmd struct {
Name string
Perm string
Handler func(*ClientConn, ...string) string
}
var chatCmds map[string]ChatCmd
var chatCmdsMu sync.RWMutex
var chatCmdsOnce sync.Once
func ChatCmdExists(name string) bool {
initChatCmds()
chatCmdsMu.RLock()
defer chatCmdsMu.RUnlock()
_, ok := chatCmds[name]
return ok
}
func RegisterChatCmd(cmd ChatCmd) bool {
initChatCmds()
if ChatCmdExists(cmd.Name) {
return false
}
chatCmdsMu.Lock()
defer chatCmdsMu.Unlock()
chatCmds[cmd.Name] = cmd
return true
}
func initChatCmds() {
chatCmdsOnce.Do(func() {
chatCmdsMu.Lock()
defer chatCmdsMu.Unlock()
chatCmds = make(map[string]ChatCmd)
})
}
|