From 647540796a50b8bbf93008def8a3a082fefa07fd Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sat, 16 Jul 2022 22:56:00 +0200 Subject: Support node meta version 0 --- serialize.go | 65 +++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 29 deletions(-) (limited to 'serialize.go') diff --git a/serialize.go b/serialize.go index b89a32e..3cf601c 100644 --- a/serialize.go +++ b/serialize.go @@ -50,53 +50,60 @@ func Serialize(blk *MapBlk, w io.Writer, nameIdMap map[mt.Content]string) { var buf bytes.Buffer zw := zlib.NewWriter(&buf) - if err := binary.Write(zw, binary.BigEndian, &NodeMetaVer); err != nil { - panic(err) + var version = NodeMetaVer + if len(blk.NodeMetas) == 0 { + version = 0 } - var count = uint16(len(blk.NodeMetas)) - if err := binary.Write(zw, binary.BigEndian, &count); err != nil { + if err := binary.Write(zw, binary.BigEndian, &version); err != nil { panic(err) } - for pos, data := range blk.NodeMetas { - if err := binary.Write(zw, binary.BigEndian, &pos); err != nil { - panic(err) - } - - var num = uint32(len(data.Fields)) - if err := binary.Write(zw, binary.BigEndian, &num); err != nil { + if version != 0 { + var count = uint16(len(blk.NodeMetas)) + if err := binary.Write(zw, binary.BigEndian, &count); err != nil { panic(err) } - for _, field := range data.Fields { - var lenName = uint16(len(field.Name)) - if err := binary.Write(zw, binary.BigEndian, &lenName); err != nil { + for pos, data := range blk.NodeMetas { + if err := binary.Write(zw, binary.BigEndian, &pos); err != nil { panic(err) } - var name = []byte(field.Name) - if err := binary.Write(zw, binary.BigEndian, &name); err != nil { + var num = uint32(len(data.Fields)) + if err := binary.Write(zw, binary.BigEndian, &num); err != nil { panic(err) } - var lenValue = uint32(len(field.Value)) - if err := binary.Write(zw, binary.BigEndian, &lenValue); err != nil { - panic(err) + for _, field := range data.Fields { + var lenName = uint16(len(field.Name)) + if err := binary.Write(zw, binary.BigEndian, &lenName); err != nil { + panic(err) + } + + var name = []byte(field.Name) + if err := binary.Write(zw, binary.BigEndian, &name); err != nil { + panic(err) + } + + var lenValue = uint32(len(field.Value)) + if err := binary.Write(zw, binary.BigEndian, &lenValue); err != nil { + panic(err) + } + + var value = []byte(field.Value) + if err := binary.Write(zw, binary.BigEndian, &value); err != nil { + panic(err) + } + + if err := binary.Write(zw, binary.BigEndian, &field.Private); err != nil { + panic(err) + } } - var value = []byte(field.Value) - if err := binary.Write(zw, binary.BigEndian, &value); err != nil { + if err := data.Inv.Serialize(zw); err != nil { panic(err) } - - if err := binary.Write(zw, binary.BigEndian, &field.Private); err != nil { - panic(err) - } - } - - if err := data.Inv.Serialize(zw); err != nil { - panic(err) } } -- cgit v1.2.3