summaryrefslogtreecommitdiff
path: root/rrdformat/format.go
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2020-01-26 22:30:00 -0500
committerLuke Shumaker <lukeshu@lukeshu.com>2020-01-26 22:30:00 -0500
commit72c4b2518a77ee9952a0fa25ae671f06d8d85570 (patch)
treeecf1aabe3c997a22d0ad1c81f4a165c48182d0f7 /rrdformat/format.go
parent02003547bc96b3758355f0af0275170da1dba942 (diff)
it compiles
Diffstat (limited to 'rrdformat/format.go')
-rw-r--r--rrdformat/format.go60
1 files changed, 37 insertions, 23 deletions
diff --git a/rrdformat/format.go b/rrdformat/format.go
index 71bd966..8898ffd 100644
--- a/rrdformat/format.go
+++ b/rrdformat/format.go
@@ -1,11 +1,8 @@
package rrdformat
import (
- "bytes"
- "encoding"
- "encoding/binary"
+ //"encoding"
"encoding/xml"
- "math"
"git.lukeshu.com/go/librrd/rrdformat/rrdbinary"
)
@@ -48,12 +45,12 @@ const XMLNS = "https://oss.oetiker.ch/rrdtool/rrdtool-dump.xml"
type RRDValue = rrdbinary.Float
type Header struct {
- Cookie rrdbinary.String `rrdbinary:"size=3" xml:"-"`
- Version rrdbinary.String `rrdbinary:"size=4" xml:"version"`
+ Cookie rrdbinary.String `rrdbinary:"size=4" xml:"-"`
+ Version rrdbinary.String `rrdbinary:"size=5" xml:"version"`
FloatCookie rrdbinary.Float `xml:"-"`
DSCnt rrdbinary.Uint `xml:"-"`
RRACnt rrdbinary.Uint `xml:"-"`
- DPDStep rrdbinary.Uint `xml:"step"`
+ PDPStep rrdbinary.Uint `xml:"step"`
Parameters [10]rrdbinary.Unival `xml:"-"`
}
@@ -66,10 +63,10 @@ type DSDef struct {
type RRADef struct {
CFName rrdbinary.String `rrdbinary:"size=20"`
RowCnt rrdbinary.Uint
- PDPCnt rrdBinary.Uint
+ PDPCnt rrdbinary.Uint
}
-type Timestamp struct {
+type Time struct {
Sec rrdbinary.Time
Usec rrdbinary.Int // signed, but always >= 0
}
@@ -92,24 +89,41 @@ type RRDv0004 = RRDv0003
type RRDv0003 struct {
Header Header
- DSDefs []DSDef
- RRADefs []RRADef
- LastUpdated Timestamp
- PDPPrep TODO
- CPDPrep TODO
- RRAPtr TODO
- Values []RRDValue
+ DSDefs []DSDef // .Header.DSCnt
+ RRADefs []RRADef // .Header.RRACnt
+ LastUpdated Time
+ PDPPrep []PDPPrep // .Header.DSCnt
+ CDPPrep []CDPPrep // .Header.DSCnt * .Header.RRACnt
+ RRAPtr []RRAPtr // .Header.RRACnt
+ Values []RRDValue // Σ .RRADefs[i].RowCnt*.Header.DsCnt
}
type RRDv0002 = RRDv0001
type RRDv0001 struct {
Header Header
- DSDefs []DSDef
- RRADefs []RRADef
- LastUpdated rrdbinary.Timestamp
- PDPPrep TODO
- CPDPrep TODO
- RRAPtr TODO
- Values []RRDValue
+ DSDefs []DSDef // .Header.DSCnt
+ RRADefs []RRADef // .Header.RRACnt
+ LastUpdated rrdbinary.Time
+ PDPPrep []PDPPrep // .Header.DSCnt
+ CDPPrep []CDPPrep // .Header.DSCnt * .Header.RRACnt
+ RRAPtr []RRAPtr // .Header.RRACnt
+ Values []RRDValue // Σ .RRADefs[i].RowCnt*.Header.DsCnt
}
+
+func (h *Header) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
+ if err := e.EncodeElement(h.Version, xml.StartElement{Name: xml.Name{Local: "version", Space: XMLNS}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(h.PDPStep, xml.StartElement{Name: xml.Name{Local: "step", Space: XMLNS}}); err != nil {
+ return err
+ }
+ return nil
+}
+
+//var _ encoding.BinaryMarshaler = &Header{}
+//var _ encoding.BinaryUnmarshaler = &Header{}
+
+var _ xml.Marshaler = &Header{}
+
+//var _ xml.Unmarshaler = &Header{}