changeset 5686:c33a5354328d sr-v2

Add stubs for de/serialize v2 meshes.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 12 Feb 2024 01:17:22 +0100
parents 0ee8ace01b60
children 8ff842858434
files pkg/mesh/meshserialize.go pkg/mesh/meshserialize_v2.go
diffstat 2 files changed, 28 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/mesh/meshserialize.go	Mon Feb 12 01:02:53 2024 +0100
+++ b/pkg/mesh/meshserialize.go	Mon Feb 12 01:17:22 2024 +0100
@@ -18,7 +18,6 @@
 	"bytes"
 	"compress/gzip"
 	"encoding/binary"
-	"errors"
 	"fmt"
 	"io"
 )
@@ -51,7 +50,6 @@
 	}
 
 	version = coalesceVersion(version)
-
 	if err := s.serializeVn(w, version); err != nil {
 		return nil, 0, err
 	}
@@ -64,27 +62,19 @@
 }
 
 func (s *STRTree) serializeVn(w io.Writer, version int) error {
-
-	if version > Version {
-		return fmt.Errorf(
-			"cannot serialize mesh version %d. Highest supported version %d",
-			version, Version)
+	switch version {
+	case 1:
+		return s.serializeV1(w)
+	case 2:
+		return s.serializeV2(w)
+	default:
+		return fmt.Errorf("cannot serialize mesh version %d", version)
 	}
-
-	return s.serializeV1(w)
 }
 
 // FromBytes restores a STRTree from a binary representation.
 func (s *STRTree) FromBytes(data []byte, version int) error {
-
 	version = coalesceVersion(version)
-
-	if version > Version {
-		return fmt.Errorf(
-			"cannot deserialize mesh version %d. Highest supported version %d",
-			version, Version)
-	}
-
 	r, err := gzip.NewReader(bytes.NewReader(data))
 	if err != nil {
 		return err
@@ -102,7 +92,7 @@
 	if bytes.HasPrefix(header, []byte(magicHeader)) {
 		realVersion := int(binary.LittleEndian.Uint32(header[4:]))
 		if realVersion != version {
-			return fmt.Errorf("sounding result version mismatch: Have %d expect %d",
+			return fmt.Errorf("mesh version mismatch: Have %d expect %d",
 				realVersion, version)
 		}
 		return s.deserializeVn(r, realVersion)
@@ -112,9 +102,12 @@
 }
 
 func (s *STRTree) deserializeVn(r *bufio.Reader, version int) error {
-	if version == 1 {
+	switch version {
+	case 1:
 		return s.deserializeV1(r)
+	case 2:
+		return s.deserializeV2(r)
+	default:
+		return fmt.Errorf("cannot deserialize mesh version %d", version)
 	}
-	// TODO: Implement me!
-	return errors.New("not implemented, yet")
 }
--- a/pkg/mesh/meshserialize_v2.go	Mon Feb 12 01:02:53 2024 +0100
+++ b/pkg/mesh/meshserialize_v2.go	Mon Feb 12 01:17:22 2024 +0100
@@ -14,12 +14,26 @@
 package mesh
 
 import (
+	"bufio"
 	"cmp"
+	"errors"
+	"io"
 	"math"
 	"slices"
 	"sort"
 )
 
+func (s *STRTree) serializeV2(w io.Writer) error {
+	// TODO: implement me!
+	return errors.New("not implemented, yet")
+}
+
+func (s *STRTree) deserializeV2(r *bufio.Reader) error {
+	// TODO: implement me!
+	return errors.New("not implemented, yet")
+}
+
+// optimizeForSerializationV2 prepares the mesh to be stored in V2.
 func (s *STRTree) optimizeForSerializationV2() {
 	s.removeUnusedTriangles()
 	s.sortVertices()