From b3d7493f5e8b20378ec2e41a10459e4339d538e9 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sat, 1 Feb 2020 18:08:43 -0500 Subject: wip --- rrdformat/unmarshal_binary.go | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) (limited to 'rrdformat/unmarshal_binary.go') diff --git a/rrdformat/unmarshal_binary.go b/rrdformat/unmarshal_binary.go index 67dc4ff..8681f48 100644 --- a/rrdformat/unmarshal_binary.go +++ b/rrdformat/unmarshal_binary.go @@ -7,19 +7,16 @@ import ( "git.lukeshu.com/go/librrd/rrdformat/rrdbinary" ) -type RRD struct { - Architecture rrdbinary.Architecture `xml:"-"` - Data RRDv0005 `xml:",innerxml"` -} - func (rrd *RRD) UnmarshalBinary(data []byte) error { - arch, err := SniffArchitecture(data) + var err error + var parsed RRD + + parsed.Architecture, err = SniffArchitecture(data) if err != nil { return err } - decoder := rrdbinary.NewDecoder(arch, data) - var parsed RRDv0005 + decoder := rrdbinary.NewDecoder(parsed.Architecture, data) if err := decoder.Decode(&parsed.Header, ""); err != nil { return fmt.Errorf("field %s: %w", "Header", err) @@ -57,9 +54,9 @@ func (rrd *RRD) UnmarshalBinary(data []byte) error { // resume decoding var lastUpdatedPtr interface{} switch parsed.Header.Version { - case "0001", "0002": + case RRD_VERSION1, RRD_VERSION2: lastUpdatedPtr = &parsed.LastUpdated.Sec - case "0003", "0004", "0005": + case RRD_VERSION3, RRD_VERSION4, RRD_VERSION5: lastUpdatedPtr = &parsed.LastUpdated default: // version number already validated by SniffArchitecture @@ -84,10 +81,7 @@ func (rrd *RRD) UnmarshalBinary(data []byte) error { return fmt.Errorf("field %s: %w", "EOF", err) } - *rrd = RRD{ - Architecture: arch, - Data: parsed, - } + *rrd = parsed return nil } -- cgit v1.2.3