1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-08-04 11:44:00 +00:00

Replace log.Println() with Statistics

This commit is contained in:
Kane York 2015-11-16 13:07:02 -08:00
parent cc3a160c29
commit a3971a27bf
4 changed files with 42 additions and 15 deletions

View file

@ -48,6 +48,9 @@ func DispatchC2SCommand(conn *websocket.Conn, client *ClientInfo, msg ClientMess
handler = C2SHandleRemoteCommand handler = C2SHandleRemoteCommand
} }
Statistics.CommandsIssuedTotal++
Statistics.CommandsIssuedMap[msg.Command]++
response, err := callHandler(handler, conn, client, msg) response, err := callHandler(handler, conn, client, msg)
if err == nil { if err == nil {
@ -308,7 +311,7 @@ func doSendAggregateData() {
followJSON, err := json.Marshal(follows) followJSON, err := json.Marshal(follows)
if err != nil { if err != nil {
log.Print(err) log.Println("error reporting aggregate data:", err)
} else { } else {
reportForm.Set("follows", string(followJSON)) reportForm.Set("follows", string(followJSON))
} }
@ -320,20 +323,20 @@ func doSendAggregateData() {
} }
emoteJSON, err := json.Marshal(strEmoteUsage) emoteJSON, err := json.Marshal(strEmoteUsage)
if err != nil { if err != nil {
log.Print(err) log.Println("error reporting aggregate data:", err)
} else { } else {
reportForm.Set("emotes", string(emoteJSON)) reportForm.Set("emotes", string(emoteJSON))
} }
form, err := SealRequest(reportForm) form, err := SealRequest(reportForm)
if err != nil { if err != nil {
log.Print(err) log.Println("error reporting aggregate data:", err)
return return
} }
err = SendAggregatedData(form) err = SendAggregatedData(form)
if err != nil { if err != nil {
log.Print(err) log.Println("error reporting aggregate data:", err)
return return
} }

View file

@ -72,7 +72,7 @@ func SetupServerAndHandle(config *ConfigFile, serveMux *http.ServeMux) {
} }
resp, err := backendHTTPClient.PostForm(announceStartupURL, announceForm) resp, err := backendHTTPClient.PostForm(announceStartupURL, announceForm)
if err != nil { if err != nil {
log.Println(err) log.Println("could not announce startup to backend:", err)
} else { } else {
resp.Body.Close() resp.Body.Close()
} }
@ -158,7 +158,7 @@ var CloseFirstMessageNotHello = websocket.CloseError{
func RunSocketConnection(conn *websocket.Conn) { func RunSocketConnection(conn *websocket.Conn) {
// websocket.Conn is a ReadWriteCloser // websocket.Conn is a ReadWriteCloser
log.Println("Got socket connection from", conn.RemoteAddr()) Statistics.ClientConnectsTotal++
var _closer sync.Once var _closer sync.Once
closer := func() { closer := func() {
@ -210,9 +210,6 @@ func RunSocketConnection(conn *websocket.Conn) {
} }
_, isClose := err.(*websocket.CloseError) _, isClose := err.(*websocket.CloseError)
if err != io.EOF && !isClose {
log.Println("Error while reading from client:", err)
}
select { select {
case errorChan <- err: case errorChan <- err:
case <-stoppedChan: case <-stoppedChan:
@ -255,8 +252,8 @@ RunLoop:
case msg := <-clientChan: case msg := <-clientChan:
if client.Version == "" && msg.Command != HelloCommand { if client.Version == "" && msg.Command != HelloCommand {
log.Println("error - first message wasn't hello from", conn.RemoteAddr(), "-", msg)
CloseConnection(conn, &CloseFirstMessageNotHello) CloseConnection(conn, &CloseFirstMessageNotHello)
Statistics.FirstNotHelloDisconnects++
break RunLoop break RunLoop
} }
@ -300,7 +297,7 @@ RunLoop:
// Close the channel so the draining goroutine can finish, too. // Close the channel so the draining goroutine can finish, too.
close(_serverMessageChan) close(_serverMessageChan)
log.Println("End socket connection from", conn.RemoteAddr()) Statistics.ClientDisconnectsTotal++
} }
func getDeadline() time.Time { func getDeadline() time.Time {
@ -308,9 +305,9 @@ func getDeadline() time.Time {
} }
func CloseConnection(conn *websocket.Conn, closeMsg *websocket.CloseError) { func CloseConnection(conn *websocket.Conn, closeMsg *websocket.CloseError) {
if closeMsg != &CloseFirstMessageNotHello { Statistics.DisconnectCodes[closeMsg.Code]++
log.Println("Terminating connection with", conn.RemoteAddr(), "-", closeMsg.Text) Statistics.DisconnectReasons[closeMsg.Text]++
}
conn.WriteControl(websocket.CloseMessage, websocket.FormatCloseMessage(closeMsg.Code, closeMsg.Text), getDeadline()) conn.WriteControl(websocket.CloseMessage, websocket.FormatCloseMessage(closeMsg.Code, closeMsg.Text), getDeadline())
conn.Close() conn.Close()
} }
@ -324,6 +321,7 @@ func SendMessage(conn *websocket.Conn, msg ClientMessage) {
} }
conn.SetWriteDeadline(getDeadline()) conn.SetWriteDeadline(getDeadline())
conn.WriteMessage(messageType, packet) conn.WriteMessage(messageType, packet)
Statistics.MessagesSent++
} }
// UnmarshalClientMessage unpacks websocket TextMessage into a ClientMessage provided in the `v` parameter. // UnmarshalClientMessage unpacks websocket TextMessage into a ClientMessage provided in the `v` parameter.

View file

@ -0,0 +1,26 @@
package server
type StatsData struct {
ClientConnectsTotal int64
ClientDisconnectsTotal int64
FirstNotHelloDisconnects int64
DisconnectCodes map[int]int64
DisconnectReasons map[string]int64
CommandsIssuedTotal int64
CommandsIssuedMap map[Command]int64
MessagesSent int64
}
func newStatsData() *StatsData {
return &StatsData{
CommandsIssuedMap: make(map[Command]int64),
DisconnectCodes: make(map[int]int64),
DisconnectReasons: make(map[string]int64),
}
}
// Statistics is several variables that get incremented during normal operation of the server.
var Statistics = newStatsData()

View file

@ -89,7 +89,7 @@ func UnsealRequest(form url.Values) (url.Values, error) {
retValues, err := url.ParseQuery(string(message)) retValues, err := url.ParseQuery(string(message))
if err != nil { if err != nil {
// Assume that the signature was accidentally correct but the contents were garbage // Assume that the signature was accidentally correct but the contents were garbage
log.Print(err) log.Println("Error unsealing request:", err)
return nil, ErrorInvalidSignature return nil, ErrorInvalidSignature
} }