Fixed Parser Interface

This commit is contained in:
simon 2025-05-29 22:24:38 +02:00
parent f7a5f595ab
commit 80a2caf29e
2 changed files with 8 additions and 16 deletions

View File

@ -9,14 +9,6 @@ type ParsedMessage struct {
payloadBytes []byte payloadBytes []byte
} }
func (pm *ParsedMessage) Type() byte {
return pm.typeByte
}
func (pm *ParsedMessage) Payload() []byte {
return pm.payloadBytes
}
type ParserConfig struct { type ParserConfig struct {
StartByte byte StartByte byte
} }
@ -144,12 +136,12 @@ func (pa *Parser) IsMessageAvailable() bool {
return len(pa.messages) > 0 return len(pa.messages) > 0
} }
func (pa *Parser) GetNextMessage() (pm ParsedMessage, err error) { func (pa *Parser) GetNextMessage() (typeByte byte, payload []byte, err error) {
if !pa.IsMessageAvailable() { if !pa.IsMessageAvailable() {
return ParsedMessage{}, fmt.Errorf("No message available") return 0x00, nil, fmt.Errorf("No message available")
} }
lastMessage := pa.messages[0] lastMessage := pa.messages[0]
pa.messages = pa.messages[1:] pa.messages = pa.messages[1:]
return lastMessage, nil return lastMessage.typeByte, lastMessage.payloadBytes, nil
} }

View File

@ -90,15 +90,15 @@ func TestParser_ParseBytes(t *testing.T) {
t.Errorf("expected message %d to be available", i) t.Errorf("expected message %d to be available", i)
break break
} }
msg, err := parser.GetNextMessage() msgtype, msgpayload, err := parser.GetNextMessage()
if err != nil { if err != nil {
t.Errorf("unexpected error when getting message: %v", err) t.Errorf("unexpected error when getting message: %v", err)
} }
if msg.Type() != expected.Type() { if msgtype != expected.typeByte {
t.Errorf("message %d: expected type 0x%02X, got 0x%02X", i, expected.Type(), msg.Type()) t.Errorf("message %d: expected type 0x%02X, got 0x%02X", i, expected.typeByte, msgtype)
} }
if !equalBytes(msg.Payload(), expected.Payload()) { if !equalBytes(msgpayload, expected.payloadBytes) {
t.Errorf("message %d: expected payload %v, got %v", i, expected.Payload(), msg.Payload()) t.Errorf("message %d: expected payload %v, got %v", i, expected.payloadBytes, msgpayload)
} }
} }
}) })