Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1905)

Side by Side Diff: go/src/infra/gae/libs/wrapper/memory/plist.go

Issue 1229503007: Roll infra/go/src/github.com/luci/luci-go/ to b85c6dd748361e8244122faac44b5beefcd2db37. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: fix tests Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package memory 5 package memory
6 6
7 import ( 7 import (
8 "bytes" 8 "bytes"
9 "fmt" 9 "fmt"
10 "reflect" 10 "reflect"
11 "sort" 11 "sort"
12 "time" 12 "time"
13 13
14 "appengine" 14 "appengine"
15 "appengine/datastore" 15 "appengine/datastore"
16 16
17 "github.com/luci/gkvlite" 17 "github.com/luci/gkvlite"
18 » "github.com/luci/luci-go/common/funnybase" 18 » "github.com/luci/luci-go/common/cmpbin"
19 ) 19 )
20 20
21 type typData struct { 21 type typData struct {
22 noIndex bool 22 noIndex bool
23 typ propValType 23 typ propValType
24 data interface{} 24 data interface{}
25 } 25 }
26 26
27 func newTypData(noIndex bool, v interface{}) (ret *typData, err error) { 27 func newTypData(noIndex bool, v interface{}) (ret *typData, err error) {
28 typ := pvUNKNOWN 28 typ := pvUNKNOWN
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 func (td *typData) WriteBinary(buf *bytes.Buffer, nso nsOption) error { 63 func (td *typData) WriteBinary(buf *bytes.Buffer, nso nsOption) error {
64 typb := byte(td.typ) 64 typb := byte(td.typ)
65 if td.noIndex { 65 if td.noIndex {
66 typb |= 0x80 66 typb |= 0x80
67 } 67 }
68 buf.WriteByte(typb) 68 buf.WriteByte(typb)
69 switch td.typ { 69 switch td.typ {
70 case pvNull, pvBoolFalse, pvBoolTrue: 70 case pvNull, pvBoolFalse, pvBoolTrue:
71 return nil 71 return nil
72 case pvInt: 72 case pvInt:
73 » » funnybase.Write(buf, td.data.(int64)) 73 » » cmpbin.WriteInt(buf, td.data.(int64))
74 case pvFloat: 74 case pvFloat:
75 writeFloat64(buf, td.data.(float64)) 75 writeFloat64(buf, td.data.(float64))
76 case pvStr: 76 case pvStr:
77 writeString(buf, td.data.(string)) 77 writeString(buf, td.data.(string))
78 case pvBytes: 78 case pvBytes:
79 if td.noIndex { 79 if td.noIndex {
80 writeBytes(buf, td.data.([]byte)) 80 writeBytes(buf, td.data.([]byte))
81 } else { 81 } else {
82 writeBytes(buf, td.data.(datastore.ByteString)) 82 writeBytes(buf, td.data.(datastore.ByteString))
83 } 83 }
(...skipping 19 matching lines...) Expand all
103 td.noIndex = (typb & 0x80) != 0 // highbit means noindex 103 td.noIndex = (typb & 0x80) != 0 // highbit means noindex
104 td.typ = propValType(typb & 0x7f) 104 td.typ = propValType(typb & 0x7f)
105 switch td.typ { 105 switch td.typ {
106 case pvNull: 106 case pvNull:
107 td.data = nil 107 td.data = nil
108 case pvBoolTrue: 108 case pvBoolTrue:
109 td.data = true 109 td.data = true
110 case pvBoolFalse: 110 case pvBoolFalse:
111 td.data = false 111 td.data = false
112 case pvInt: 112 case pvInt:
113 » » td.data, err = funnybase.Read(buf) 113 » » td.data, _, err = cmpbin.ReadInt(buf)
114 case pvFloat: 114 case pvFloat:
115 td.data, err = readFloat64(buf) 115 td.data, err = readFloat64(buf)
116 case pvStr: 116 case pvStr:
117 td.data, err = readString(buf) 117 td.data, err = readString(buf)
118 case pvBytes: 118 case pvBytes:
119 b := []byte(nil) 119 b := []byte(nil)
120 if b, err = readBytes(buf); err != nil { 120 if b, err = readBytes(buf); err != nil {
121 return err 121 return err
122 } 122 }
123 if td.noIndex { 123 if td.noIndex {
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 504
505 func (pl *propertyList) MarshalBinary() ([]byte, error) { 505 func (pl *propertyList) MarshalBinary() ([]byte, error) {
506 cols, err := pl.collate() 506 cols, err := pl.collate()
507 if err != nil || len(cols) == 0 { 507 if err != nil || len(cols) == 0 {
508 return nil, err 508 return nil, err
509 } 509 }
510 510
511 pieces := make([][]byte, 0, len(*pl)*2+1) 511 pieces := make([][]byte, 0, len(*pl)*2+1)
512 for _, pv := range cols { 512 for _, pv := range cols {
513 // TODO(riannucci): estimate buffer size better. 513 // TODO(riannucci): estimate buffer size better.
514 » » buf := bytes.NewBuffer(make([]byte, 0, funnybase.MaxFunnyBaseLen 64+len(pv.name))) 514 » » buf := bytes.NewBuffer(make([]byte, 0, cmpbin.MaxIntLen64+len(pv .name)))
515 writeString(buf, pv.name) 515 writeString(buf, pv.name)
516 err := pv.WriteBinary(buf) 516 err := pv.WriteBinary(buf)
517 if err != nil { 517 if err != nil {
518 return nil, err 518 return nil, err
519 } 519 }
520 pieces = append(pieces, buf.Bytes()) 520 pieces = append(pieces, buf.Bytes())
521 } 521 }
522 return bytes.Join(pieces, nil), nil 522 return bytes.Join(pieces, nil), nil
523 } 523 }
524 524
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 // These two are problematic, because they force us to bind to the appen gine 602 // These two are problematic, because they force us to bind to the appen gine
603 // SDK code. If we can drop support for these and turn them into hard er rors, 603 // SDK code. If we can drop support for these and turn them into hard er rors,
604 // that could let us decouple from the various appengine SDKs. Maybe. 604 // that could let us decouple from the various appengine SDKs. Maybe.
605 pvKey // TODO(riannucci): remove support for this (use a string) 605 pvKey // TODO(riannucci): remove support for this (use a string)
606 pvBlobKey // TODO(riannucci): remove support for this (use a string) 606 pvBlobKey // TODO(riannucci): remove support for this (use a string)
607 607
608 pvUNKNOWN 608 pvUNKNOWN
609 ) 609 )
610 610
611 func (p *pvals) ReadBinary(buf *bytes.Buffer) error { 611 func (p *pvals) ReadBinary(buf *bytes.Buffer) error {
612 » n, err := funnybase.ReadUint(buf) 612 » n, _, err := cmpbin.ReadUint(buf)
613 if err != nil { 613 if err != nil {
614 return err 614 return err
615 } 615 }
616 616
617 p.vals = make([]*typData, n) 617 p.vals = make([]*typData, n)
618 for i := range p.vals { 618 for i := range p.vals {
619 p.vals[i] = &typData{} 619 p.vals[i] = &typData{}
620 err := p.vals[i].ReadBinary(buf, withNS, "") 620 err := p.vals[i].ReadBinary(buf, withNS, "")
621 if err != nil { 621 if err != nil {
622 return err 622 return err
623 } 623 }
624 } 624 }
625 625
626 return nil 626 return nil
627 } 627 }
628 628
629 func (p *pvals) WriteBinary(buf *bytes.Buffer) error { 629 func (p *pvals) WriteBinary(buf *bytes.Buffer) error {
630 » funnybase.WriteUint(buf, uint64(len(p.vals))) 630 » cmpbin.WriteUint(buf, uint64(len(p.vals)))
631 for _, v := range p.vals { 631 for _, v := range p.vals {
632 if err := v.WriteBinary(buf, withNS); err != nil { 632 if err := v.WriteBinary(buf, withNS); err != nil {
633 return err 633 return err
634 } 634 }
635 } 635 }
636 return nil 636 return nil
637 } 637 }
OLDNEW
« no previous file with comments | « go/src/infra/gae/libs/wrapper/memory/key.go ('k') | go/src/infra/gae/libs/wrapper/memory/testing_utils_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698