changeset 5687:8ff842858434 sr-v2

More stubs for serializing v2.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 12 Feb 2024 01:31:48 +0100
parents c33a5354328d
children 6281c18b109f
files pkg/mesh/meshserialize.go pkg/mesh/meshserialize_v1.go pkg/mesh/meshserialize_v2.go
diffstat 3 files changed, 39 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/mesh/meshserialize.go	Mon Feb 12 01:17:22 2024 +0100
+++ b/pkg/mesh/meshserialize.go	Mon Feb 12 01:31:48 2024 +0100
@@ -95,6 +95,10 @@
 			return fmt.Errorf("mesh version mismatch: Have %d expect %d",
 				realVersion, version)
 		}
+		// Skip the header
+		if _, err := r.Discard(8); err != nil {
+			return err
+		}
 		return s.deserializeVn(r, realVersion)
 	}
 
--- a/pkg/mesh/meshserialize_v1.go	Mon Feb 12 01:17:22 2024 +0100
+++ b/pkg/mesh/meshserialize_v1.go	Mon Feb 12 01:31:48 2024 +0100
@@ -26,20 +26,13 @@
 	if err := s.tin.serializeV1(w); err != nil {
 		return err
 	}
-
 	if err := binary.Write(w, binary.LittleEndian, uint8(s.Entries)); err != nil {
 		return err
 	}
-
 	if err := s.serializeIndexV1(w); err != nil {
 		return err
 	}
-
-	if err := s.serializeBBoxesV1(w); err != nil {
-		return err
-	}
-
-	return nil
+	return s.serializeBBoxesV1(w)
 }
 
 func (s *STRTree) serializeBBoxesV1(w io.Writer) error {
--- a/pkg/mesh/meshserialize_v2.go	Mon Feb 12 01:17:22 2024 +0100
+++ b/pkg/mesh/meshserialize_v2.go	Mon Feb 12 01:31:48 2024 +0100
@@ -16,6 +16,7 @@
 import (
 	"bufio"
 	"cmp"
+	"encoding/binary"
 	"errors"
 	"io"
 	"math"
@@ -24,7 +25,39 @@
 )
 
 func (s *STRTree) serializeV2(w io.Writer) error {
-	// TODO: implement me!
+	// Write header
+	if _, err := w.Write([]byte(magicHeader)); err != nil {
+		return err
+	}
+	// Write version
+	if err := binary.Write(w, binary.LittleEndian, uint32(2)); err != nil {
+		return err
+	}
+	// Write the mesh itself
+	if err := s.tin.serializeV2(w); err != nil {
+		return err
+	}
+	if err := binary.Write(w, binary.LittleEndian, uint8(s.Entries)); err != nil {
+		return err
+	}
+	if err := s.serializeIndexV2(w); err != nil {
+		return err
+	}
+	return s.serializeBBoxesV2(w)
+}
+
+func (t *Tin) serializeV2(w io.Writer) error {
+	// TODO: Implement me!
+	return errors.New("not implemented, yet")
+}
+
+func (s *STRTree) serializeIndexV2(w io.Writer) error {
+	// TODO: Implement me!
+	return errors.New("not implemented, yet")
+}
+
+func (s *STRTree) serializeBBoxesV2(w io.Writer) error {
+	// TODO: Implement me!
 	return errors.New("not implemented, yet")
 }