archive
This commit is contained in:
52
MovieNight/connection.go
Executable file
52
MovieNight/connection.go
Executable file
@@ -0,0 +1,52 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"sync"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/zorchenhimer/MovieNight/common"
|
||||
)
|
||||
|
||||
type chatConnection struct {
|
||||
*websocket.Conn
|
||||
mutex sync.RWMutex
|
||||
forwardedFor string
|
||||
clientName string
|
||||
}
|
||||
|
||||
func (cc *chatConnection) ReadData(data interface{}) error {
|
||||
cc.mutex.RLock()
|
||||
defer cc.mutex.RUnlock()
|
||||
|
||||
stats.msgInInc()
|
||||
return cc.ReadJSON(data)
|
||||
}
|
||||
|
||||
func (cc *chatConnection) WriteData(data interface{}) error {
|
||||
cc.mutex.Lock()
|
||||
defer cc.mutex.Unlock()
|
||||
|
||||
stats.msgOutInc()
|
||||
err := cc.WriteJSON(data)
|
||||
if err != nil {
|
||||
if operr, ok := err.(*net.OpError); ok {
|
||||
common.LogDebugln("OpError: " + operr.Err.Error())
|
||||
}
|
||||
return fmt.Errorf("Error writing data to %s %s: %v", cc.clientName, cc.Host(), err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (cc *chatConnection) Host() string {
|
||||
if len(cc.forwardedFor) > 0 {
|
||||
return cc.forwardedFor
|
||||
}
|
||||
|
||||
host, _, err := net.SplitHostPort(cc.RemoteAddr().String())
|
||||
if err != nil {
|
||||
return cc.RemoteAddr().String()
|
||||
}
|
||||
return host
|
||||
}
|
||||
Reference in New Issue
Block a user