KeepAlive error handling
This commit is contained in:
@ -3,6 +3,7 @@ package server
|
|||||||
import (
|
import (
|
||||||
"container/list"
|
"container/list"
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/Tnze/go-mc/data/packetid"
|
"github.com/Tnze/go-mc/data/packetid"
|
||||||
@ -121,10 +122,14 @@ func (k *KeepAlive) pingPlayer(now time.Time) {
|
|||||||
if elem := k.pingList.Front(); elem != nil {
|
if elem := k.pingList.Front(); elem != nil {
|
||||||
player := elem.Value.(keepAliveItem).player
|
player := elem.Value.(keepAliveItem).player
|
||||||
// Send Clientbound KeepAlive packet.
|
// Send Clientbound KeepAlive packet.
|
||||||
player.WritePacket(Packet757(pk.Marshal(
|
err := player.WritePacket(Packet757(pk.Marshal(
|
||||||
packetid.ClientboundKeepAlive,
|
packetid.ClientboundKeepAlive,
|
||||||
pk.Long(k.keepAliveID),
|
pk.Long(k.keepAliveID),
|
||||||
)))
|
)))
|
||||||
|
if err != nil {
|
||||||
|
player.PutErr(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
k.keepAliveID++
|
k.keepAliveID++
|
||||||
// Clientbound KeepAlive packet is sent, move the player to waiting list.
|
// Clientbound KeepAlive packet is sent, move the player to waiting list.
|
||||||
k.pingList.Remove(elem)
|
k.pingList.Remove(elem)
|
||||||
@ -148,7 +153,8 @@ func (k *KeepAlive) tickPlayer(p *Player) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if elem == nil {
|
if elem == nil {
|
||||||
panic("keepalive: fail to tick player: " + p.UUID.String() + " not found")
|
p.PutErr(errors.New("keepalive: fail to tick player: " + p.UUID.String() + " not found"))
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if elem.Prev() == nil {
|
if elem.Prev() == nil {
|
||||||
|
@ -38,8 +38,13 @@ type PacketHandler struct {
|
|||||||
type packetHandlerFunc func(packet Packet757) error
|
type packetHandlerFunc func(packet Packet757) error
|
||||||
|
|
||||||
func (p *Player) Add(ph PacketHandler) {
|
func (p *Player) Add(ph PacketHandler) {
|
||||||
|
|
||||||
if p.handlers == nil {
|
if p.handlers == nil {
|
||||||
p.handlers = make(map[int32][]packetHandlerFunc)
|
p.handlers = make(map[int32][]packetHandlerFunc)
|
||||||
}
|
}
|
||||||
p.handlers[ph.ID] = append(p.handlers[ph.ID], ph.F)
|
p.handlers[ph.ID] = append(p.handlers[ph.ID], ph.F)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *Player) PutErr(err error) {
|
||||||
|
// TODO: handle errors
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user