package main const ( RemoteGetState = FrameType(0x01) RemoteHandleMutation = FrameType(0x02) ResponseBody = FrameType(0x03) RemoteGetStateReply = FrameType(0x04) RemoteHandleMutationReply = FrameType(0x05) ) // type CartPacket struct { // Version PackageVersion // MessageType CartMessage // DataLength uint32 // StatusCode uint32 // Id CartId // } // type Packet struct { // Version PackageVersion // MessageType PoolMessage // DataLength uint32 // StatusCode uint32 // } // var headerData = make([]byte, 4) // func matchHeader(conn io.Reader) error { // pos := 0 // for pos < 4 { // l, err := conn.Read(headerData) // if err != nil { // return err // } // for i := 0; i < l; i++ { // if headerData[i] == header[pos] { // pos++ // if pos == 4 { // return nil // } // } else { // pos = 0 // } // } // } // return nil // } // func ReadPacket(conn io.Reader, packet *Packet) error { // err := matchHeader(conn) // if err != nil { // return err // } // return binary.Read(conn, binary.LittleEndian, packet) // } // func ReadCartPacket(conn io.Reader, packet *CartPacket) error { // err := matchHeader(conn) // if err != nil { // return err // } // return binary.Read(conn, binary.LittleEndian, packet) // } // func GetPacketData(conn io.Reader, len uint32) ([]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 // }