@@ -147,14 +147,18 @@ type Node struct {
147147}
148148
149149func encodeListNodes (nodes []Node , w io.Writer ) error {
150- numBuf := make ([ ]byte , 8 )
151- binary .BigEndian .PutUint64 (numBuf , uint64 (len (nodes )))
152- if _ , err := w .Write (numBuf ); err != nil {
150+ var hdr [ 10 ]byte
151+ binary .BigEndian .PutUint64 (hdr [: 8 ] , uint64 (len (nodes )))
152+ if _ , err := w .Write (hdr [: 8 ] ); err != nil {
153153 return err
154154 }
155-
156- for ni := 0 ; ni < len (nodes ); ni ++ {
157- if _ , err := w .Write (nodes [ni ].Encode ()); err != nil {
155+ for i := range nodes {
156+ binary .BigEndian .PutUint64 (hdr [:8 ], nodes [i ].di )
157+ binary .BigEndian .PutUint16 (hdr [8 :], uint16 (len (nodes [i ].key )))
158+ if _ , err := w .Write (hdr [:]); err != nil {
159+ return err
160+ }
161+ if _ , err := w .Write (nodes [i ].key ); err != nil {
158162 return err
159163 }
160164 }
@@ -175,14 +179,6 @@ func decodeListNodes(data []byte) ([]Node, error) {
175179 return nodes , nil
176180}
177181
178- func (n Node ) Encode () []byte {
179- buf := make ([]byte , 8 + 2 + len (n .key ))
180- binary .BigEndian .PutUint64 (buf [:8 ], n .di )
181- binary .BigEndian .PutUint16 (buf [8 :10 ], uint16 (len (n .key )))
182- copy (buf [10 :], n .key )
183- return buf
184- }
185-
186182func (n * Node ) Decode (buf []byte ) (uint64 , error ) {
187183 if len (buf ) < 10 {
188184 return 0 , errors .New ("short buffer (less than 10b)" )
0 commit comments