88 lines
1.4 KiB
Go
88 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/binary"
|
|
"io"
|
|
|
|
"github.com/anon55555/mt/rudp"
|
|
)
|
|
|
|
func ByteReader(pkt rudp.Pkt) *bytes.Reader {
|
|
buf := make([]byte, rudp.MaxUnrelPktSize)
|
|
n, _ := pkt.Read(buf)
|
|
buf = buf[:n]
|
|
|
|
return bytes.NewReader(buf)
|
|
}
|
|
|
|
func ReadUint8(r io.Reader) uint8 {
|
|
b := make([]byte, 1)
|
|
r.Read(b)
|
|
return uint8(b[0])
|
|
}
|
|
|
|
func WriteUint8(w io.Writer, v uint8) {
|
|
w.Write([]byte{v})
|
|
}
|
|
|
|
func ReadUint16(r io.Reader) uint16 {
|
|
b := make([]byte, 2)
|
|
r.Read(b)
|
|
return binary.BigEndian.Uint16(b)
|
|
}
|
|
|
|
func WriteUint16(w io.Writer, v uint16) {
|
|
b := make([]byte, 2)
|
|
binary.BigEndian.PutUint16(b, v)
|
|
w.Write(b)
|
|
}
|
|
|
|
func ReadUint32(r io.Reader) uint32 {
|
|
b := make([]byte, 4)
|
|
r.Read(b)
|
|
return binary.BigEndian.Uint32(b)
|
|
}
|
|
|
|
func WriteUint32(w io.Writer, v uint32) {
|
|
b := make([]byte, 4)
|
|
binary.BigEndian.PutUint32(b, v)
|
|
w.Write(b)
|
|
}
|
|
|
|
func ReadUint64(r io.Reader) uint64 {
|
|
b := make([]byte, 8)
|
|
r.Read(b)
|
|
return binary.BigEndian.Uint64(b)
|
|
}
|
|
|
|
func WriteUint64(w io.Writer, v uint64) {
|
|
b := make([]byte, 8)
|
|
binary.BigEndian.PutUint64(b, v)
|
|
w.Write(b)
|
|
}
|
|
|
|
func ReadBytes16(r io.Reader) []byte {
|
|
l := ReadUint16(r)
|
|
b := make([]byte, l)
|
|
r.Read(b)
|
|
return b
|
|
}
|
|
|
|
func WriteBytes16(w io.Writer, v []byte) {
|
|
WriteUint16(w, uint16(len(v)))
|
|
w.Write(v)
|
|
}
|
|
|
|
func ReadBytes32(r io.Reader) []byte {
|
|
l := ReadUint32(r)
|
|
b := make([]byte, l)
|
|
r.Read(b)
|
|
return b
|
|
}
|
|
|
|
func WriteBytes32(w io.Writer, v []byte) {
|
|
WriteUint32(w, uint32(len(v)))
|
|
w.Write(v)
|
|
}
|