summaryrefslogtreecommitdiff
path: root/rrdformat/unmarshal_binary.go
diff options
context:
space:
mode:
Diffstat (limited to 'rrdformat/unmarshal_binary.go')
-rw-r--r--rrdformat/unmarshal_binary.go22
1 files changed, 8 insertions, 14 deletions
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
}