diff --git a/generate/generate.go b/generate/generate.go index ea2762b..1792b40 100644 --- a/generate/generate.go +++ b/generate/generate.go @@ -11,6 +11,7 @@ import "git.tebibyte.media/sashakoshka/hopp/tape" const imports = ` +import "fmt" import "git.tebibyte.media/sashakoshka/hopp" import "git.tebibyte.media/sashakoshka/hopp/tape" ` @@ -41,7 +42,9 @@ func Send(trans hopp.Trans, message Message) (n int, err error) { if err != nil { return n, err } defer writer.Close() encoder := tape.NewEncoder(writer) - return message.Encode(encoder) + n, err = message.Encode(encoder) + if err != nil { return n, err } + return n, encoder.Flush() } // canAssign determines if data from the given source tag can be assigned to @@ -1216,7 +1219,7 @@ func (this *Generator) generateReceive() (n int, err error) { nn, err = this.iprintf("switch method {\n") n += nn; if err != nil { return n, err } for method, message := range this.protocol.Messages { - nn, err = this.iprintf("case %04X:\n", method) + nn, err = this.iprintf("case 0x%04X:\n", method) n += nn; if err != nil { return n, err } this.push() nn, err = this.iprintf( @@ -1234,7 +1237,7 @@ func (this *Generator) generateReceive() (n int, err error) { } nn, err = this.iprint("}\n") n += nn; if err != nil { return n, err } - nn, err = this.iprintf("return nil, n, hopp.ErrUnknownMethod\n") + nn, err = this.iprint("return nil, n, fmt.Errorf(\"%w: M%04X\", hopp.ErrUnknownMethod, method)\n") n += nn; if err != nil { return n, err } this.pop() nn, err = this.iprint("}\n")