|
|
@@ -61,21 +61,24 @@ func (r *Record) Read(reader io.Reader) error {
|
|
61
|
61
|
}
|
|
62
|
62
|
|
|
63
|
63
|
func (r *Record) Dump(writer io.Writer) error {
|
|
64
|
|
- buf := acquireBytesBuffer()
|
|
65
|
|
- defer releaseBytesBuffer(buf)
|
|
|
64
|
+ buf := [2]byte{byte(r.Type), 0}
|
|
|
65
|
+ if _, err := writer.Write(buf[:1]); err != nil {
|
|
|
66
|
+ return fmt.Errorf("cannot dump record type: %w", err)
|
|
|
67
|
+ }
|
|
66
|
68
|
|
|
67
|
|
- bufSlice := [2]byte{byte(r.Type), 0}
|
|
68
|
|
- buf.Write(bufSlice[:1])
|
|
|
69
|
+ binary.BigEndian.PutUint16(buf[:], uint16(r.Version))
|
|
69
|
70
|
|
|
70
|
|
- binary.BigEndian.PutUint16(bufSlice[:], uint16(r.Version))
|
|
71
|
|
- buf.Write(bufSlice[:])
|
|
|
71
|
+ if _, err := writer.Write(buf[:]); err != nil {
|
|
|
72
|
+ return fmt.Errorf("cannot dump version: %w", err)
|
|
|
73
|
+ }
|
|
72
|
74
|
|
|
73
|
|
- binary.BigEndian.PutUint16(bufSlice[:], uint16(r.Payload.Len()))
|
|
74
|
|
- buf.Write(bufSlice[:])
|
|
|
75
|
+ binary.BigEndian.PutUint16(buf[:], uint16(r.Payload.Len()))
|
|
75
|
76
|
|
|
76
|
|
- buf.Write(r.Payload.Bytes())
|
|
|
77
|
+ if _, err := writer.Write(buf[:]); err != nil {
|
|
|
78
|
+ return fmt.Errorf("cannot dump payload length: %w", err)
|
|
|
79
|
+ }
|
|
77
|
80
|
|
|
78
|
|
- if _, err := buf.WriteTo(writer); err != nil {
|
|
|
81
|
+ if _, err := writer.Write(r.Payload.Bytes()); err != nil {
|
|
79
|
82
|
return fmt.Errorf("cannot dump record: %w", err)
|
|
80
|
83
|
}
|
|
81
|
84
|
|