KeepAlive error handling

This commit is contained in:
Tnze
2021-12-23 01:26:55 +08:00
parent 260fc64701
commit 0fc4453bf6
2 changed files with 13 additions and 2 deletions

View File

@ -3,6 +3,7 @@ package server
import (
"container/list"
"context"
"errors"
"time"
"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 {
player := elem.Value.(keepAliveItem).player
// Send Clientbound KeepAlive packet.
player.WritePacket(Packet757(pk.Marshal(
err := player.WritePacket(Packet757(pk.Marshal(
packetid.ClientboundKeepAlive,
pk.Long(k.keepAliveID),
)))
if err != nil {
player.PutErr(err)
return
}
k.keepAliveID++
// Clientbound KeepAlive packet is sent, move the player to waiting list.
k.pingList.Remove(elem)
@ -148,7 +153,8 @@ func (k *KeepAlive) tickPlayer(p *Player) {
}
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 {

View File

@ -38,8 +38,13 @@ type PacketHandler struct {
type packetHandlerFunc func(packet Packet757) error
func (p *Player) Add(ph PacketHandler) {
if p.handlers == nil {
p.handlers = make(map[int32][]packetHandlerFunc)
}
p.handlers[ph.ID] = append(p.handlers[ph.ID], ph.F)
}
func (p *Player) PutErr(err error) {
// TODO: handle errors
}