Count bytes coming in/out of player
This commit is contained in:
@@ -6,6 +6,8 @@ import (
|
||||
"log"
|
||||
)
|
||||
|
||||
const maxMessageSize = 1024
|
||||
|
||||
type player struct {
|
||||
ws *websocket.Conn
|
||||
Robots []*Robot
|
||||
@@ -17,8 +19,12 @@ type player struct {
|
||||
func (p *player) sender() {
|
||||
log.Printf("%s: sender launched", p.Id)
|
||||
for things := range p.send {
|
||||
enc := json.NewEncoder(p.ws)
|
||||
err := enc.Encode(things)
|
||||
b, err := json.Marshal(things)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
// XXX: send the count to our bandwidth analyzer ...
|
||||
_, err = p.ws.Write(b)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
@@ -28,17 +34,22 @@ func (p *player) sender() {
|
||||
}
|
||||
|
||||
func (p *player) recv() {
|
||||
buff := make([]byte, maxMessageSize)
|
||||
var msgs map[string]Instruction
|
||||
for {
|
||||
// XXX: need to mark myself as having received something, also binding
|
||||
// such action to a particular game turn ID
|
||||
var msgs map[string]Instruction
|
||||
dec := json.NewDecoder(p.ws)
|
||||
err := dec.Decode(&msgs)
|
||||
n, err := p.ws.Read(buff)
|
||||
if err != nil {
|
||||
// TODO: perhaps we could be a bit more precise in the handling of
|
||||
// this 'error' by selecting on some kill signal channel and this
|
||||
// json read?
|
||||
log.Printf("%s: problem receiving JSON from player: %s", p.Id, err)
|
||||
log.Printf("%s: problem reading from player: %s", p.Id, err)
|
||||
break
|
||||
}
|
||||
// XXX: send n to our bandwidth analyzer ...
|
||||
if n == len(buff) {
|
||||
log.Printf("%s: read buffer overfull: %s", p.Id, string(buff))
|
||||
break
|
||||
}
|
||||
err = json.Unmarshal(buff[:n], &msgs)
|
||||
if err != nil {
|
||||
log.Printf("%s: problem reading from player: %s", p.Id, err)
|
||||
break
|
||||
}
|
||||
|
||||
@@ -50,8 +61,6 @@ func (p *player) recv() {
|
||||
continue
|
||||
}
|
||||
|
||||
// log.Printf("%v", msg.FireAt)
|
||||
|
||||
if msg.Repair != nil && *msg.Repair == true {
|
||||
r.ActiveScan = false
|
||||
r.TargetSpeed = 0
|
||||
|
||||
Reference in New Issue
Block a user