major refactoring :/
All checks were successful
Build and Publish / BuildAndDeploy (push) Successful in 1m56s
All checks were successful
Build and Publish / BuildAndDeploy (push) Successful in 1m56s
This commit is contained in:
34
packet.go
34
packet.go
@@ -8,16 +8,18 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
RemoteGetState = uint16(0x01)
|
||||
RemoteHandleMessage = uint16(0x02)
|
||||
ResponseBody = uint16(0x03)
|
||||
RemoteGetState = uint16(0x01)
|
||||
RemoteHandleMessage = uint16(0x02)
|
||||
ResponseBody = uint16(0x03)
|
||||
RemoteGetStateReply = uint16(0x04)
|
||||
RemoteHandleMessageReply = uint16(0x05)
|
||||
)
|
||||
|
||||
type CartPacket struct {
|
||||
Version uint16
|
||||
MessageType uint16
|
||||
Id CartId
|
||||
DataLength uint16
|
||||
Id CartId
|
||||
}
|
||||
|
||||
type Packet struct {
|
||||
@@ -37,8 +39,8 @@ func SendCartPacket(conn io.Writer, id CartId, messageType uint16, datafn func(w
|
||||
binary.Write(conn, binary.LittleEndian, CartPacket{
|
||||
Version: 2,
|
||||
MessageType: messageType,
|
||||
Id: id,
|
||||
DataLength: uint16(len(data)),
|
||||
Id: id,
|
||||
})
|
||||
_, err = conn.Write(data)
|
||||
return err
|
||||
@@ -86,19 +88,29 @@ func SendProxyResponse(conn io.Writer, data any) error {
|
||||
})
|
||||
}
|
||||
|
||||
func ReadPacket[V Packet | CartPacket](conn io.Reader, packet *V) error {
|
||||
return binary.Read(conn, binary.LittleEndian, packet)
|
||||
}
|
||||
|
||||
func GetPacketData(conn io.Reader, len int) ([]byte, error) {
|
||||
data := make([]byte, len)
|
||||
l, err := conn.Read(data)
|
||||
if l != len {
|
||||
return nil, fmt.Errorf("expected %d bytes, got %d", len, l)
|
||||
}
|
||||
return data, err
|
||||
}
|
||||
|
||||
func ReceivePacket(conn io.Reader) (uint16, []byte, error) {
|
||||
var packet Packet
|
||||
err := binary.Read(conn, binary.LittleEndian, &packet)
|
||||
err := ReadPacket(conn, &packet)
|
||||
if err != nil {
|
||||
return packet.MessageType, nil, err
|
||||
}
|
||||
data := make([]byte, packet.DataLength)
|
||||
l, err := conn.Read(data)
|
||||
|
||||
data, err := GetPacketData(conn, int(packet.DataLength))
|
||||
if err != nil {
|
||||
return packet.MessageType, nil, err
|
||||
}
|
||||
if l != int(packet.DataLength) {
|
||||
return packet.MessageType, nil, fmt.Errorf("expected %d bytes, got %d", packet.DataLength, l)
|
||||
}
|
||||
return packet.MessageType, data, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user