Files
go-cart-actor/packet.go
matst80 c70c5cd930
All checks were successful
Build and Publish / BuildAndDeploy (push) Successful in 1m58s
maybe
2024-11-10 21:43:40 +01:00

56 lines
1.1 KiB
Go

package main
import (
"encoding/binary"
"io"
)
const (
RemoteGetState = uint32(0x01)
RemoteHandleMutation = uint32(0x02)
ResponseBody = uint32(0x03)
RemoteGetStateReply = uint32(0x04)
RemoteHandleMutationReply = uint32(0x05)
)
type CartPacket struct {
Version uint32
MessageType uint32
DataLength uint64
Id CartId
}
type Packet struct {
Version uint32
MessageType uint32
DataLength uint64
}
func ReadPacket(conn io.Reader, packet *Packet) error {
return binary.Read(conn, binary.LittleEndian, packet)
}
func ReadCartPacket(conn io.Reader, packet *CartPacket) error {
return binary.Read(conn, binary.LittleEndian, packet)
}
func GetPacketData(conn io.Reader, len uint64) ([]byte, error) {
data := make([]byte, len)
_, err := conn.Read(data)
return data, err
}
func ReceivePacket(conn io.Reader) (uint32, []byte, error) {
var packet Packet
err := ReadPacket(conn, &packet)
if err != nil {
return 0, nil, err
}
data, err := GetPacketData(conn, packet.DataLength)
if err != nil {
return 0, nil, err
}
return packet.MessageType, data, nil
}