diff --git a/examples/chat/protocol.go b/examples/chat/protocol.go index 05e024a..b0ffdbe 100644 --- a/examples/chat/protocol.go +++ b/examples/chat/protocol.go @@ -103,29 +103,29 @@ func(this *MessageError) Encode(encoder *tape.Encoder) (n int, err error) { nn, err = encoder.WriteUintN(2, tag_1.CN() + 1) n += nn; if err != nil { return n, err } { - nn, err = encoder.WriteUint16(0x0000) - n += nn; if err != nil { return n, err } - tag_2 := tape.LI.WithCN(1) - nn, err = encoder.WriteUint8(uint8(tag_2)) - n += nn; if err != nil { return n, err } - nn, err = encoder.WriteUint16(uint16((*this).Code)) - n += nn; if err != nil { return n, err } if value, ok := (*this).Description.Value(); ok { nn, err = encoder.WriteUint16(0x0001) n += nn; if err != nil { return n, err } - tag_3 := tape.StringTag(string(value)) - nn, err = encoder.WriteUint8(uint8(tag_3)) + tag_2 := tape.StringTag(string(value)) + nn, err = encoder.WriteUint8(uint8(tag_2)) n += nn; if err != nil { return n, err } if len(value) > tape.MaxStructureLength { return n, tape.ErrTooLong } - if tag_3.Is(tape.LBA) { - nn, err = encoder.WriteUintN(uint64(len(value)), tag_3.CN()) + if tag_2.Is(tape.LBA) { + nn, err = encoder.WriteUintN(uint64(len(value)), tag_2.CN()) n += nn; if err != nil { return n, err } } nn, err = encoder.Write([]byte(value)) n += nn; if err != nil { return n, err } } + nn, err = encoder.WriteUint16(0x0000) + n += nn; if err != nil { return n, err } + tag_3 := tape.LI.WithCN(1) + nn, err = encoder.WriteUint8(uint8(tag_3)) + n += nn; if err != nil { return n, err } + nn, err = encoder.WriteUint16(uint16((*this).Code)) + n += nn; if err != nil { return n, err } } return n, nil } @@ -723,6 +723,11 @@ func Receive(trans hopp.Trans) (message ReceivedMessage, n int, err error) { if err != nil { return nil, n, err } decoder := tape.NewDecoder(reader) switch method { + case 0x0000: + var message MessageError + nn, err := message.Decode(decoder) + n += nn; if err != nil { return nil, n, err } + return message, n, nil case 0x0001: var message MessageSuccess nn, err := message.Decode(decoder) @@ -748,11 +753,6 @@ func Receive(trans hopp.Trans) (message ReceivedMessage, n int, err error) { nn, err := message.Decode(decoder) n += nn; if err != nil { return nil, n, err } return message, n, nil - case 0x0000: - var message MessageError - nn, err := message.Decode(decoder) - n += nn; if err != nil { return nil, n, err } - return message, n, nil } return nil, n, fmt.Errorf("%w: M%04X", hopp.ErrUnknownMethod, method) }