summaryrefslogtreecommitdiff
path: root/rrdformat
diff options
context:
space:
mode:
Diffstat (limited to 'rrdformat')
-rw-r--r--rrdformat/format.go8
-rw-r--r--rrdformat/marshal_xml.go23
2 files changed, 28 insertions, 3 deletions
diff --git a/rrdformat/format.go b/rrdformat/format.go
index ca0c459..2dbcb30 100644
--- a/rrdformat/format.go
+++ b/rrdformat/format.go
@@ -75,6 +75,14 @@ type DSDef struct {
Parameters [10]rrdbinary.Unival `xml:"params>item"`
}
+const (
+ DSParam_MRHBCnt = iota // Minimum Required HeatBeat Count
+ DSParam_MinVal
+ DSParam_MaxVal
+ // When DSType==DST_CDEF, none of the above are used, and the
+ // parameters are instead interpretted with .AsRPNTokens().
+)
+
type RRADef struct {
CFName rrdbinary.String `rrdbinary:"size=20" xml:"cf"`
RowCnt rrdbinary.ULong `xml:"-"`
diff --git a/rrdformat/marshal_xml.go b/rrdformat/marshal_xml.go
index cb2db93..8e98d10 100644
--- a/rrdformat/marshal_xml.go
+++ b/rrdformat/marshal_xml.go
@@ -93,13 +93,14 @@ func (ds DSDef) marshalXML(rrd RRD, e *xml.Encoder, start xml.StartElement) erro
if err := e.EncodeToken(start); err != nil {
return err
}
+ // 1. DS Common
if err := e.EncodeElement(" "+ds.DSName+" ", xmlStart("name")); err != nil {
return err
}
if err := e.EncodeElement(" "+ds.DSType+" ", xmlStart("type")); err != nil {
return err
}
-
+ // 2. Parameters
switch ds.DSType {
case DST_CDEF:
var rpnps []rrdbinary.RPNToken
@@ -114,9 +115,25 @@ func (ds DSDef) marshalXML(rrd RRD, e *xml.Encoder, start xml.StartElement) erro
return err
}
default:
-
+ if err := e.EncodeElement(ds.Parameters[DSParam_MRHBCnt].AsULong(), xmlStart("minimal_heartbeat")); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(ds.Parameters[DSParam_MinVal].AsDouble(), xmlStart("min")); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(ds.Parameters[DSParam_MaxVal].AsDouble(), xmlStart("max")); err != nil {
+ return err
+ }
}
-
+ // 3. Comment
+ if err := e.EncodeToken(xml.CharData("\n\n")); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.Comment(" PDP Status ")); err != nil {
+ return err
+ }
+ // 4. TODO
+ // End
if err := e.EncodeToken(start.End()); err != nil {
return err
}