Add encoding decoding of header

This commit is contained in:
PhatPhuckDave
2024-07-22 20:41:18 +02:00
parent 21e2e17f27
commit 0ac3f31c3f
2 changed files with 33 additions and 8 deletions

View File

@@ -2,6 +2,7 @@ package pdu
type (
PDU interface {
EncodeInto(*[]byte)
Encode() []byte
Decode([]byte)
}
@@ -19,12 +20,23 @@ type (
)
func (p *PDU_HEADER) Encode() []byte {
// Encode PDU_HEADER fields to byte slice
// (For simplicity, we assume little-endian encoding)
buf := make([]byte, 16)
encodeUint32(buf[0:4], p.command_length)
encodeUint32(buf[4:8], p.command_id)
encodeUint32(buf[8:12], p.command_status)
encodeUint32(buf[12:16], p.sequence_number)
return buf
buf := make([]byte, 16)
EncodeUint32(buf[0:4], p.command_length)
EncodeUint32(buf[4:8], p.command_id)
EncodeUint32(buf[8:12], p.command_status)
EncodeUint32(buf[12:16], p.sequence_number)
return buf
}
func (p *PDU_HEADER) EncodeInto(buf *[]byte) {
bufVal := *buf
EncodeUint32(bufVal[0:4], p.command_length)
EncodeUint32(bufVal[4:8], p.command_id)
EncodeUint32(bufVal[8:12], p.command_status)
EncodeUint32(bufVal[12:16], p.sequence_number)
}
func (p *PDU_HEADER) Decode(data []byte) {
p.command_length = DecodeUint32(data[0:4])
p.command_id = DecodeUint32(data[4:8])
p.command_status = DecodeUint32(data[8:12])
p.sequence_number = DecodeUint32(data[12:16])
}