@@ -3,7 +3,9 @@ package netdata
33import (
44 "bytes"
55 "encoding/binary"
6+ "errors"
67 "io"
8+ "strconv"
79)
810
911// DataInputX is a byte buffer read stream struct
@@ -75,14 +77,21 @@ func (in *DataInputX) ReadFloat32() (float32, error) {
7577 return value , err
7678}
7779
80+ func (in * DataInputX ) ReadFloat64 () (float64 , error ) {
81+ in .offset += 8
82+ var value float64
83+ err := binary .Read (in .reader , binary .BigEndian , & value )
84+ return value , err
85+ }
86+
7887// ReadString returns string value
7988func (in * DataInputX ) ReadString () (string , error ) {
80- bytes , err := in .readBlob ()
89+ bytes , err := in .ReadBlob ()
8190 return string (bytes ), err
8291
8392}
8493
85- func (in * DataInputX ) readBlob () ([]byte , error ) {
94+ func (in * DataInputX ) ReadBlob () ([]byte , error ) {
8695 baseLen , err := in .ReadUInt8 ()
8796 var length int32
8897 switch baseLen {
@@ -147,15 +156,30 @@ func (in *DataInputX) ReadBoolean() (bool, error) {
147156func (in * DataInputX ) ReadValue () (Value , error ) {
148157 valueType , err := in .ReadInt8 ()
149158 value := CreateValue (byte (valueType ))
159+ if value == nil {
160+ return NewNilValue (), errors .New ("[scouter] Not defined value type:" + strconv .FormatUint (uint64 (valueType ), 10 ))
161+ }
150162 readValue , err := value .Read (in )
151163 return readValue , err
152164
153165}
154166
155167func (in * DataInputX ) ReadIntBytes () ([]byte , error ) {
156168 length , err := in .ReadInt32 ()
157- val := make ([]byte , length )
158- _ , err = in .reader .Read (val )
169+ b , err := in .Read (length )
170+ return b , err
171+ //val := make([]byte, length)
172+ //_, err = in.reader.Read(val)
173+ //if err != nil {
174+ // val = []byte{}
175+ //}
176+ //return val, err
177+ }
178+
179+ func (in * DataInputX ) Read (len int32 ) ([]byte , error ) {
180+ in .offset += len
181+ val := make ([]byte , len )
182+ _ , err := in .reader .Read (val )
159183 if err != nil {
160184 val = []byte {}
161185 }
0 commit comments