Steel/pkg/network/packets/connection_request_accepted.go
2023-12-19 20:49:11 +01:00

39 lines
999 B
Go

package packets
import (
"bytes"
"encoding/binary"
"net"
)
type ConnectionRequestAccepted struct {
ClientAddress net.UDPAddr
SystemAddresses [20]net.UDPAddr
RequestTimestamp int64
AcceptedTimestamp int64
}
func (pk *ConnectionRequestAccepted) Write(buf *bytes.Buffer) {
_ = binary.Write(buf, binary.BigEndian, IDConnectionRequestAccepted)
writeAddr(buf, pk.ClientAddress)
_ = binary.Write(buf, binary.BigEndian, int16(0))
for _, addr := range pk.SystemAddresses {
writeAddr(buf, addr)
}
_ = binary.Write(buf, binary.BigEndian, pk.RequestTimestamp)
_ = binary.Write(buf, binary.BigEndian, pk.AcceptedTimestamp)
}
func (pk *ConnectionRequestAccepted) Read(buf *bytes.Buffer) error {
_ = readAddr(buf, &pk.ClientAddress)
buf.Next(2)
for i := 0; i < 20; i++ {
_ = readAddr(buf, &pk.SystemAddresses[i])
if buf.Len() == 16 {
break
}
}
_ = binary.Read(buf, binary.BigEndian, &pk.RequestTimestamp)
return binary.Read(buf, binary.BigEndian, &pk.AcceptedTimestamp)
}