39 lines
999 B
Go
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)
|
||
|
|
}
|