Fixed Parser Interface
This commit is contained in:
parent
f7a5f595ab
commit
80a2caf29e
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user