Handle legacy server list ping for handshake
This commit is contained in:
+24
-4
@@ -7,6 +7,12 @@ type Frame struct {
|
||||
Payload []byte
|
||||
}
|
||||
|
||||
type State int
|
||||
|
||||
const (
|
||||
StateHandshaking = iota
|
||||
)
|
||||
|
||||
var trimLimit = 64
|
||||
|
||||
func trimBytes(data []byte) ([]byte, string) {
|
||||
@@ -25,15 +31,23 @@ func (f *Frame) String() string {
|
||||
type Packet struct {
|
||||
Length int
|
||||
PacketID int
|
||||
Data []byte
|
||||
// Data is either a byte slice of raw content or a parsed message
|
||||
Data interface{}
|
||||
}
|
||||
|
||||
func (p *Packet) String() string {
|
||||
trimmed, cont := trimBytes(p.Data)
|
||||
return fmt.Sprintf("Frame:[len=%d, packetId=%d, data=%#X%s]", p.Length, p.PacketID, trimmed, cont)
|
||||
if dataBytes, ok := p.Data.([]byte); ok {
|
||||
trimmed, cont := trimBytes(dataBytes)
|
||||
return fmt.Sprintf("Frame:[len=%d, packetId=%d, data=%#X%s]", p.Length, p.PacketID, trimmed, cont)
|
||||
} else {
|
||||
return fmt.Sprintf("Frame:[len=%d, packetId=%d, data=%+v]", p.Length, p.PacketID, p.Data)
|
||||
}
|
||||
}
|
||||
|
||||
const PacketIdHandshake = 0x00
|
||||
const (
|
||||
PacketIdHandshake = 0x00
|
||||
PacketIdLegacyServerListPing = 0xFE
|
||||
)
|
||||
|
||||
type Handshake struct {
|
||||
ProtocolVersion int
|
||||
@@ -42,6 +56,12 @@ type Handshake struct {
|
||||
NextState int
|
||||
}
|
||||
|
||||
type LegacyServerListPing struct {
|
||||
ProtocolVersion int
|
||||
ServerAddress string
|
||||
ServerPort uint16
|
||||
}
|
||||
|
||||
type ByteReader interface {
|
||||
ReadByte() (byte, error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user