1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-06-28 15:27:43 +00:00
FrankerFaceZ/socketserver/cmd/ffzsocketserver/console.go

73 lines
1.6 KiB
Go
Raw Normal View History

2015-10-27 21:21:06 -07:00
package main
import (
"../../internal/server"
"fmt"
"github.com/abiosoft/ishell"
"runtime"
2015-10-28 17:24:21 -07:00
"strings"
"github.com/gorilla/websocket"
2015-10-27 21:21:06 -07:00
)
func commandLineConsole() {
shell := ishell.NewShell()
shell.Register("clientcount", func(args ...string) (string, error) {
server.GlobalSubscriptionInfo.RLock()
count := len(server.GlobalSubscriptionInfo.Members)
server.GlobalSubscriptionInfo.RUnlock()
return fmt.Sprintln(count, "clients connected"), nil
})
shell.Register("globalnotice", func(args ...string) (string, error) {
msg := server.ClientMessage{
MessageID: -1,
Command: "message",
Arguments: args[0],
}
server.PublishToAll(msg)
return "Message sent.", nil
})
2015-10-28 17:24:21 -07:00
shell.Register("publish", func(args ...string) (string, error) {
if len(args) < 4 {
return "Usage: publish [room.sirstendec | _ALL] -1 reload_ff 23", nil
}
target := args[0]
line := strings.Join(args[1:], " ")
msg := server.ClientMessage{}
err := server.UnmarshalClientMessage([]byte(line), websocket.TextMessage, &msg)
if err != nil {
return "", err
}
var count int
if target == "_ALL" {
count = server.PublishToAll(msg)
} else {
count = server.PublishToChat(target, msg)
}
return fmt.Sprintf("Published to %d clients", count), nil
})
2015-10-27 21:21:06 -07:00
shell.Register("memstatsbysize", func(args ...string) (string, error) {
runtime.GC()
m := runtime.MemStats{}
runtime.ReadMemStats(&m)
for _, val := range m.BySize {
if val.Mallocs == 0 {
continue
}
shell.Println(val.Size, "bytes:", val.Mallocs, "allocs", val.Frees, "frees")
}
shell.Println(m.NumGC, "collections occurred")
return "", nil
})
shell.Start()
}
2015-10-28 17:24:21 -07:00