summaryrefslogtreecommitdiff
path: root/rrdformat/format.go
diff options
context:
space:
mode:
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{}