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) { if len == 0 { return []byte{}, nil } 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 // }