Skip to content

Commit 7d856c5

Browse files
committed
Make proto/parser an internal package
1 parent 5c3ab24 commit 7d856c5

24 files changed

+841
-712
lines changed

cluster.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"time"
88

99
"gopkg.in/redis.v4/internal"
10+
"gopkg.in/redis.v4/internal/errors"
1011
"gopkg.in/redis.v4/internal/hashtag"
1112
"gopkg.in/redis.v4/internal/pool"
1213
)
@@ -291,14 +292,14 @@ func (c *ClusterClient) Process(cmd Cmder) error {
291292
}
292293

293294
// On network errors try random node.
294-
if shouldRetry(err) {
295+
if errors.IsRetryable(err) {
295296
node, err = c.randomNode()
296297
continue
297298
}
298299

299300
var moved bool
300301
var addr string
301-
moved, ask, addr = isMovedError(err)
302+
moved, ask, addr = errors.IsMoved(err)
302303
if moved || ask {
303304
master, _ := c.slotMasterNode(slot)
304305
if moved && (master == nil || master.Addr != addr) {
@@ -549,11 +550,11 @@ func (c *ClusterClient) execClusterCmds(
549550
if err == nil {
550551
continue
551552
}
552-
if isNetworkError(err) {
553+
if errors.IsNetwork(err) {
553554
cmd.reset()
554555
failedCmds[nil] = append(failedCmds[nil], cmds[i:]...)
555556
break
556-
} else if moved, ask, addr := isMovedError(err); moved {
557+
} else if moved, ask, addr := errors.IsMoved(err); moved {
557558
c.lazyReloadSlots()
558559
cmd.reset()
559560
node, err := c.nodeByAddr(addr)

cluster_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,7 @@ var _ = Describe("ClusterClient", func() {
393393
for i := 0; i < 100; i++ {
394394
wg.Add(1)
395395
go func() {
396+
defer GinkgoRecover()
396397
defer wg.Done()
397398

398399
err := incr("key")

command.go

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"time"
99

1010
"gopkg.in/redis.v4/internal/pool"
11+
"gopkg.in/redis.v4/internal/proto"
1112
)
1213

1314
var (
@@ -55,16 +56,14 @@ func resetCmds(cmds []Cmder) {
5556
}
5657

5758
func writeCmd(cn *pool.Conn, cmds ...Cmder) error {
58-
cn.Buf = cn.Buf[:0]
59+
cn.Wb.Reset()
5960
for _, cmd := range cmds {
60-
var err error
61-
cn.Buf, err = appendArgs(cn.Buf, cmd.args())
62-
if err != nil {
61+
if err := cn.Wb.Append(cmd.args()); err != nil {
6362
return err
6463
}
6564
}
6665

67-
_, err := cn.Write(cn.Buf)
66+
_, err := cn.Write(cn.Wb.Bytes())
6867
return err
6968
}
7069

@@ -166,7 +165,7 @@ func (cmd *Cmd) String() string {
166165
}
167166

168167
func (cmd *Cmd) readReply(cn *pool.Conn) error {
169-
val, err := readReply(cn, sliceParser)
168+
val, err := cn.Rd.ReadReply(sliceParser)
170169
if err != nil {
171170
cmd.err = err
172171
return cmd.err
@@ -211,7 +210,7 @@ func (cmd *SliceCmd) String() string {
211210
}
212211

213212
func (cmd *SliceCmd) readReply(cn *pool.Conn) error {
214-
v, err := readArrayReply(cn, sliceParser)
213+
v, err := cn.Rd.ReadArrayReply(sliceParser)
215214
if err != nil {
216215
cmd.err = err
217216
return err
@@ -251,7 +250,7 @@ func (cmd *StatusCmd) String() string {
251250
}
252251

253252
func (cmd *StatusCmd) readReply(cn *pool.Conn) error {
254-
cmd.val, cmd.err = readStringReply(cn)
253+
cmd.val, cmd.err = cn.Rd.ReadStringReply()
255254
return cmd.err
256255
}
257256

@@ -286,7 +285,7 @@ func (cmd *IntCmd) String() string {
286285
}
287286

288287
func (cmd *IntCmd) readReply(cn *pool.Conn) error {
289-
cmd.val, cmd.err = readIntReply(cn)
288+
cmd.val, cmd.err = cn.Rd.ReadIntReply()
290289
return cmd.err
291290
}
292291

@@ -325,7 +324,7 @@ func (cmd *DurationCmd) String() string {
325324
}
326325

327326
func (cmd *DurationCmd) readReply(cn *pool.Conn) error {
328-
n, err := readIntReply(cn)
327+
n, err := cn.Rd.ReadIntReply()
329328
if err != nil {
330329
cmd.err = err
331330
return err
@@ -367,7 +366,7 @@ func (cmd *BoolCmd) String() string {
367366
var ok = []byte("OK")
368367

369368
func (cmd *BoolCmd) readReply(cn *pool.Conn) error {
370-
v, err := readReply(cn, nil)
369+
v, err := cn.Rd.ReadReply(nil)
371370
// `SET key value NX` returns nil when key already exists. But
372371
// `SETNX key value` returns bool (0/1). So convert nil to bool.
373372
// TODO: is this okay?
@@ -410,7 +409,7 @@ func (cmd *StringCmd) reset() {
410409
}
411410

412411
func (cmd *StringCmd) Val() string {
413-
return bytesToString(cmd.val)
412+
return string(cmd.val)
414413
}
415414

416415
func (cmd *StringCmd) Result() (string, error) {
@@ -446,15 +445,15 @@ func (cmd *StringCmd) Scan(val interface{}) error {
446445
if cmd.err != nil {
447446
return cmd.err
448447
}
449-
return scan(cmd.val, val)
448+
return proto.Scan(cmd.val, val)
450449
}
451450

452451
func (cmd *StringCmd) String() string {
453452
return cmdString(cmd, cmd.val)
454453
}
455454

456455
func (cmd *StringCmd) readReply(cn *pool.Conn) error {
457-
b, err := readBytesReply(cn)
456+
b, err := cn.Rd.ReadBytesReply()
458457
if err != nil {
459458
cmd.err = err
460459
return err
@@ -498,7 +497,7 @@ func (cmd *FloatCmd) String() string {
498497
}
499498

500499
func (cmd *FloatCmd) readReply(cn *pool.Conn) error {
501-
cmd.val, cmd.err = readFloatReply(cn)
500+
cmd.val, cmd.err = cn.Rd.ReadFloatReply()
502501
return cmd.err
503502
}
504503

@@ -533,7 +532,7 @@ func (cmd *StringSliceCmd) String() string {
533532
}
534533

535534
func (cmd *StringSliceCmd) readReply(cn *pool.Conn) error {
536-
v, err := readArrayReply(cn, stringSliceParser)
535+
v, err := cn.Rd.ReadArrayReply(stringSliceParser)
537536
if err != nil {
538537
cmd.err = err
539538
return err
@@ -573,7 +572,7 @@ func (cmd *BoolSliceCmd) String() string {
573572
}
574573

575574
func (cmd *BoolSliceCmd) readReply(cn *pool.Conn) error {
576-
v, err := readArrayReply(cn, boolSliceParser)
575+
v, err := cn.Rd.ReadArrayReply(boolSliceParser)
577576
if err != nil {
578577
cmd.err = err
579578
return err
@@ -613,7 +612,7 @@ func (cmd *StringStringMapCmd) String() string {
613612
}
614613

615614
func (cmd *StringStringMapCmd) readReply(cn *pool.Conn) error {
616-
v, err := readArrayReply(cn, stringStringMapParser)
615+
v, err := cn.Rd.ReadArrayReply(stringStringMapParser)
617616
if err != nil {
618617
cmd.err = err
619618
return err
@@ -653,7 +652,7 @@ func (cmd *StringIntMapCmd) reset() {
653652
}
654653

655654
func (cmd *StringIntMapCmd) readReply(cn *pool.Conn) error {
656-
v, err := readArrayReply(cn, stringIntMapParser)
655+
v, err := cn.Rd.ReadArrayReply(stringIntMapParser)
657656
if err != nil {
658657
cmd.err = err
659658
return err
@@ -693,7 +692,7 @@ func (cmd *ZSliceCmd) String() string {
693692
}
694693

695694
func (cmd *ZSliceCmd) readReply(cn *pool.Conn) error {
696-
v, err := readArrayReply(cn, zSliceParser)
695+
v, err := cn.Rd.ReadArrayReply(zSliceParser)
697696
if err != nil {
698697
cmd.err = err
699698
return err
@@ -737,7 +736,7 @@ func (cmd *ScanCmd) String() string {
737736
}
738737

739738
func (cmd *ScanCmd) readReply(cn *pool.Conn) error {
740-
page, cursor, err := readScanReply(cn)
739+
page, cursor, err := cn.Rd.ReadScanReply()
741740
if err != nil {
742741
cmd.err = err
743742
return cmd.err
@@ -789,7 +788,7 @@ func (cmd *ClusterSlotsCmd) reset() {
789788
}
790789

791790
func (cmd *ClusterSlotsCmd) readReply(cn *pool.Conn) error {
792-
v, err := readArrayReply(cn, clusterSlotsParser)
791+
v, err := cn.Rd.ReadArrayReply(clusterSlotsParser)
793792
if err != nil {
794793
cmd.err = err
795794
return err
@@ -874,7 +873,7 @@ func (cmd *GeoLocationCmd) String() string {
874873
}
875874

876875
func (cmd *GeoLocationCmd) readReply(cn *pool.Conn) error {
877-
reply, err := readArrayReply(cn, newGeoLocationSliceParser(cmd.q))
876+
reply, err := cn.Rd.ReadArrayReply(newGeoLocationSliceParser(cmd.q))
878877
if err != nil {
879878
cmd.err = err
880879
return err
@@ -924,7 +923,7 @@ func (cmd *CommandsInfoCmd) reset() {
924923
}
925924

926925
func (cmd *CommandsInfoCmd) readReply(cn *pool.Conn) error {
927-
v, err := readArrayReply(cn, commandInfoSliceParser)
926+
v, err := cn.Rd.ReadArrayReply(commandInfoSliceParser)
928927
if err != nil {
929928
cmd.err = err
930929
return err

commands.go

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,9 @@ import (
66
"time"
77

88
"gopkg.in/redis.v4/internal"
9+
"gopkg.in/redis.v4/internal/errors"
910
)
1011

11-
func formatInt(i int64) string {
12-
return strconv.FormatInt(i, 10)
13-
}
14-
15-
func formatUint(i uint64) string {
16-
return strconv.FormatUint(i, 10)
17-
}
18-
19-
func formatFloat(f float64) string {
20-
return strconv.FormatFloat(f, 'f', -1, 64)
21-
}
22-
2312
func readTimeout(timeout time.Duration) time.Duration {
2413
if timeout == 0 {
2514
return 0
@@ -38,7 +27,7 @@ func formatMs(dur time.Duration) string {
3827
dur, time.Millisecond,
3928
)
4029
}
41-
return formatInt(int64(dur / time.Millisecond))
30+
return strconv.FormatInt(int64(dur/time.Millisecond), 10)
4231
}
4332

4433
func formatSec(dur time.Duration) string {
@@ -48,7 +37,7 @@ func formatSec(dur time.Duration) string {
4837
dur, time.Second,
4938
)
5039
}
51-
return formatInt(int64(dur / time.Second))
40+
return strconv.FormatInt(int64(dur/time.Second), 10)
5241
}
5342

5443
type cmdable struct {
@@ -1515,7 +1504,7 @@ func (c *cmdable) shutdown(modifier string) *StatusCmd {
15151504
}
15161505
} else {
15171506
// Server did not quit. String reply contains the reason.
1518-
cmd.err = errorf(cmd.val)
1507+
cmd.err = errors.RedisError(cmd.val)
15191508
cmd.val = ""
15201509
}
15211510
return cmd

error.go

Lines changed: 0 additions & 81 deletions
This file was deleted.

0 commit comments

Comments
 (0)