| Index: service/rawdatastore/serialize.go
|
| diff --git a/service/rawdatastore/serialize.go b/service/rawdatastore/serialize.go
|
| index f61054ccd670956b81d06750c59309949e968fbf..8fe3424367ecc6052b33ac5641eb7cac6491124a 100644
|
| --- a/service/rawdatastore/serialize.go
|
| +++ b/service/rawdatastore/serialize.go
|
| @@ -151,8 +151,8 @@ func ReadKeyTok(buf Buffer) (ret KeyTok, err error) {
|
| return
|
| }
|
|
|
| -// WriteGeoPoint writes a GeoPoint to the buffer.
|
| -func WriteGeoPoint(buf Buffer, gp GeoPoint) (err error) {
|
| +// Write writes a GeoPoint to the buffer.
|
| +func (gp GeoPoint) Write(buf Buffer) (err error) {
|
| defer recoverTo(&err)
|
| _, e := cmpbin.WriteFloat64(buf, gp.Lat)
|
| panicIf(e)
|
| @@ -160,8 +160,8 @@ func WriteGeoPoint(buf Buffer, gp GeoPoint) (err error) {
|
| return e
|
| }
|
|
|
| -// ReadGeoPoint reads a GeoPoint from the buffer.
|
| -func ReadGeoPoint(buf Buffer) (gp GeoPoint, err error) {
|
| +// Read reads a GeoPoint from the buffer.
|
| +func (gp *GeoPoint) Read(buf Buffer) (err error) {
|
| defer recoverTo(&err)
|
| e := error(nil)
|
| gp.Lat, _, e = cmpbin.ReadFloat64(buf)
|
| @@ -198,10 +198,10 @@ func ReadTime(buf Buffer) (time.Time, error) {
|
| return time.Unix(int64(v/1e6), int64((v%1e6)*1e3)).UTC(), nil
|
| }
|
|
|
| -// WriteProperty writes a Property to the buffer. `context` behaves the same
|
| +// Write writes a Property to the buffer. `context` behaves the same
|
| // way that it does for WriteKey, but only has an effect if `p` contains a
|
| // Key as its Value.
|
| -func WriteProperty(buf Buffer, p Property, context KeyContext) (err error) {
|
| +func (p *Property) Write(buf Buffer, context KeyContext) (err error) {
|
| defer recoverTo(&err)
|
| typb := byte(p.Type())
|
| if p.IndexSetting() == NoIndex {
|
| @@ -225,7 +225,7 @@ func WriteProperty(buf Buffer, p Property, context KeyContext) (err error) {
|
| case PTTime:
|
| err = WriteTime(buf, p.Value().(time.Time))
|
| case PTGeoPoint:
|
| - err = WriteGeoPoint(buf, p.Value().(GeoPoint))
|
| + err = p.Value().(GeoPoint).Write(buf)
|
| case PTKey:
|
| err = WriteKey(buf, context, p.Value().(Key))
|
| case PTBlobKey:
|
| @@ -234,10 +234,10 @@ func WriteProperty(buf Buffer, p Property, context KeyContext) (err error) {
|
| return
|
| }
|
|
|
| -// ReadProperty reads a Property from the buffer. `context`, `appid`, and
|
| +// Read reads a Property from the buffer. `context`, `appid`, and
|
| // `namespace` behave the same way they do for ReadKey, but only have an
|
| // effect if the decoded property has a Key value.
|
| -func ReadProperty(buf Buffer, context KeyContext, appid, namespace string) (p Property, err error) {
|
| +func (p *Property) Read(buf Buffer, context KeyContext, appid, namespace string) (err error) {
|
| val := interface{}(nil)
|
| typb, err := buf.ReadByte()
|
| if err != nil {
|
| @@ -272,7 +272,9 @@ func ReadProperty(buf Buffer, context KeyContext, appid, namespace string) (p Pr
|
| case PTTime:
|
| val, err = ReadTime(buf)
|
| case PTGeoPoint:
|
| - val, err = ReadGeoPoint(buf)
|
| + gp := GeoPoint{}
|
| + err = gp.Read(buf)
|
| + val = gp
|
| case PTKey:
|
| val, err = ReadKey(buf, context, appid, namespace)
|
| case PTBlobKey:
|
| @@ -290,23 +292,23 @@ func ReadProperty(buf Buffer, context KeyContext, appid, namespace string) (p Pr
|
| return
|
| }
|
|
|
| -// WritePropertyMap writes an entire PropertyMap to the buffer. `context`
|
| +// Write writes an entire PropertyMap to the buffer. `context`
|
| // behaves the same way that it does for WriteKey. If
|
| // WritePropertyMapDeterministic is true, then the rows will be sorted by
|
| // property name before they're serialized to buf (mostly useful for testing,
|
| // but also potentially useful if you need to make a hash of the property data).
|
| -func WritePropertyMap(buf Buffer, propMap PropertyMap, context KeyContext) (err error) {
|
| +func (pm PropertyMap) Write(buf Buffer, context KeyContext) (err error) {
|
| defer recoverTo(&err)
|
| - rows := make(sort.StringSlice, 0, len(propMap))
|
| + rows := make(sort.StringSlice, 0, len(pm))
|
| tmpBuf := &bytes.Buffer{}
|
| - for name, vals := range propMap {
|
| + for name, vals := range pm {
|
| tmpBuf.Reset()
|
| _, e := cmpbin.WriteString(tmpBuf, name)
|
| panicIf(e)
|
| _, e = cmpbin.WriteUint(tmpBuf, uint64(len(vals)))
|
| panicIf(e)
|
| for _, p := range vals {
|
| - panicIf(WriteProperty(tmpBuf, p, context))
|
| + panicIf(p.Write(tmpBuf, context))
|
| }
|
| rows = append(rows, tmpBuf.String())
|
| }
|
| @@ -315,7 +317,7 @@ func WritePropertyMap(buf Buffer, propMap PropertyMap, context KeyContext) (err
|
| rows.Sort()
|
| }
|
|
|
| - _, e := cmpbin.WriteUint(buf, uint64(len(propMap)))
|
| + _, e := cmpbin.WriteUint(buf, uint64(len(pm)))
|
| panicIf(e)
|
| for _, r := range rows {
|
| _, e := buf.WriteString(r)
|
| @@ -324,9 +326,9 @@ func WritePropertyMap(buf Buffer, propMap PropertyMap, context KeyContext) (err
|
| return
|
| }
|
|
|
| -// ReadPropertyMap reads a PropertyMap from the buffer. `context` and
|
| +// Read reads a PropertyMap from the buffer. `context` and
|
| // friends behave the same way that they do for ReadKey.
|
| -func ReadPropertyMap(buf Buffer, context KeyContext, appid, namespace string) (propMap PropertyMap, err error) {
|
| +func (pm PropertyMap) Read(buf Buffer, context KeyContext, appid, namespace string) (err error) {
|
| defer recoverTo(&err)
|
|
|
| numRows := uint64(0)
|
| @@ -338,7 +340,6 @@ func ReadPropertyMap(buf Buffer, context KeyContext, appid, namespace string) (p
|
| }
|
|
|
| name, prop := "", Property{}
|
| - propMap = make(PropertyMap, numRows)
|
| for i := uint64(0); i < numRows; i++ {
|
| name, _, e = cmpbin.ReadString(buf)
|
| panicIf(e)
|
| @@ -351,11 +352,10 @@ func ReadPropertyMap(buf Buffer, context KeyContext, appid, namespace string) (p
|
| }
|
| props := make([]Property, 0, numProps)
|
| for j := uint64(0); j < numProps; j++ {
|
| - prop, e = ReadProperty(buf, context, appid, namespace)
|
| - panicIf(e)
|
| + panicIf(prop.Read(buf, context, appid, namespace))
|
| props = append(props, prop)
|
| }
|
| - propMap[name] = props
|
| + pm[name] = props
|
| }
|
| return
|
| }
|
|
|