|
8 | 8 | "time"
|
9 | 9 |
|
10 | 10 | "gopkg.in/redis.v4/internal/pool"
|
| 11 | + "gopkg.in/redis.v4/internal/proto" |
11 | 12 | )
|
12 | 13 |
|
13 | 14 | var (
|
@@ -55,16 +56,14 @@ func resetCmds(cmds []Cmder) {
|
55 | 56 | }
|
56 | 57 |
|
57 | 58 | func writeCmd(cn *pool.Conn, cmds ...Cmder) error {
|
58 |
| - cn.Buf = cn.Buf[:0] |
| 59 | + cn.Wb.Reset() |
59 | 60 | 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 { |
63 | 62 | return err
|
64 | 63 | }
|
65 | 64 | }
|
66 | 65 |
|
67 |
| - _, err := cn.Write(cn.Buf) |
| 66 | + _, err := cn.Write(cn.Wb.Bytes()) |
68 | 67 | return err
|
69 | 68 | }
|
70 | 69 |
|
@@ -166,7 +165,7 @@ func (cmd *Cmd) String() string {
|
166 | 165 | }
|
167 | 166 |
|
168 | 167 | func (cmd *Cmd) readReply(cn *pool.Conn) error {
|
169 |
| - val, err := readReply(cn, sliceParser) |
| 168 | + val, err := cn.Rd.ReadReply(sliceParser) |
170 | 169 | if err != nil {
|
171 | 170 | cmd.err = err
|
172 | 171 | return cmd.err
|
@@ -211,7 +210,7 @@ func (cmd *SliceCmd) String() string {
|
211 | 210 | }
|
212 | 211 |
|
213 | 212 | func (cmd *SliceCmd) readReply(cn *pool.Conn) error {
|
214 |
| - v, err := readArrayReply(cn, sliceParser) |
| 213 | + v, err := cn.Rd.ReadArrayReply(sliceParser) |
215 | 214 | if err != nil {
|
216 | 215 | cmd.err = err
|
217 | 216 | return err
|
@@ -251,7 +250,7 @@ func (cmd *StatusCmd) String() string {
|
251 | 250 | }
|
252 | 251 |
|
253 | 252 | func (cmd *StatusCmd) readReply(cn *pool.Conn) error {
|
254 |
| - cmd.val, cmd.err = readStringReply(cn) |
| 253 | + cmd.val, cmd.err = cn.Rd.ReadStringReply() |
255 | 254 | return cmd.err
|
256 | 255 | }
|
257 | 256 |
|
@@ -286,7 +285,7 @@ func (cmd *IntCmd) String() string {
|
286 | 285 | }
|
287 | 286 |
|
288 | 287 | func (cmd *IntCmd) readReply(cn *pool.Conn) error {
|
289 |
| - cmd.val, cmd.err = readIntReply(cn) |
| 288 | + cmd.val, cmd.err = cn.Rd.ReadIntReply() |
290 | 289 | return cmd.err
|
291 | 290 | }
|
292 | 291 |
|
@@ -325,7 +324,7 @@ func (cmd *DurationCmd) String() string {
|
325 | 324 | }
|
326 | 325 |
|
327 | 326 | func (cmd *DurationCmd) readReply(cn *pool.Conn) error {
|
328 |
| - n, err := readIntReply(cn) |
| 327 | + n, err := cn.Rd.ReadIntReply() |
329 | 328 | if err != nil {
|
330 | 329 | cmd.err = err
|
331 | 330 | return err
|
@@ -367,7 +366,7 @@ func (cmd *BoolCmd) String() string {
|
367 | 366 | var ok = []byte("OK")
|
368 | 367 |
|
369 | 368 | func (cmd *BoolCmd) readReply(cn *pool.Conn) error {
|
370 |
| - v, err := readReply(cn, nil) |
| 369 | + v, err := cn.Rd.ReadReply(nil) |
371 | 370 | // `SET key value NX` returns nil when key already exists. But
|
372 | 371 | // `SETNX key value` returns bool (0/1). So convert nil to bool.
|
373 | 372 | // TODO: is this okay?
|
@@ -410,7 +409,7 @@ func (cmd *StringCmd) reset() {
|
410 | 409 | }
|
411 | 410 |
|
412 | 411 | func (cmd *StringCmd) Val() string {
|
413 |
| - return bytesToString(cmd.val) |
| 412 | + return string(cmd.val) |
414 | 413 | }
|
415 | 414 |
|
416 | 415 | func (cmd *StringCmd) Result() (string, error) {
|
@@ -446,15 +445,15 @@ func (cmd *StringCmd) Scan(val interface{}) error {
|
446 | 445 | if cmd.err != nil {
|
447 | 446 | return cmd.err
|
448 | 447 | }
|
449 |
| - return scan(cmd.val, val) |
| 448 | + return proto.Scan(cmd.val, val) |
450 | 449 | }
|
451 | 450 |
|
452 | 451 | func (cmd *StringCmd) String() string {
|
453 | 452 | return cmdString(cmd, cmd.val)
|
454 | 453 | }
|
455 | 454 |
|
456 | 455 | func (cmd *StringCmd) readReply(cn *pool.Conn) error {
|
457 |
| - b, err := readBytesReply(cn) |
| 456 | + b, err := cn.Rd.ReadBytesReply() |
458 | 457 | if err != nil {
|
459 | 458 | cmd.err = err
|
460 | 459 | return err
|
@@ -498,7 +497,7 @@ func (cmd *FloatCmd) String() string {
|
498 | 497 | }
|
499 | 498 |
|
500 | 499 | func (cmd *FloatCmd) readReply(cn *pool.Conn) error {
|
501 |
| - cmd.val, cmd.err = readFloatReply(cn) |
| 500 | + cmd.val, cmd.err = cn.Rd.ReadFloatReply() |
502 | 501 | return cmd.err
|
503 | 502 | }
|
504 | 503 |
|
@@ -533,7 +532,7 @@ func (cmd *StringSliceCmd) String() string {
|
533 | 532 | }
|
534 | 533 |
|
535 | 534 | func (cmd *StringSliceCmd) readReply(cn *pool.Conn) error {
|
536 |
| - v, err := readArrayReply(cn, stringSliceParser) |
| 535 | + v, err := cn.Rd.ReadArrayReply(stringSliceParser) |
537 | 536 | if err != nil {
|
538 | 537 | cmd.err = err
|
539 | 538 | return err
|
@@ -573,7 +572,7 @@ func (cmd *BoolSliceCmd) String() string {
|
573 | 572 | }
|
574 | 573 |
|
575 | 574 | func (cmd *BoolSliceCmd) readReply(cn *pool.Conn) error {
|
576 |
| - v, err := readArrayReply(cn, boolSliceParser) |
| 575 | + v, err := cn.Rd.ReadArrayReply(boolSliceParser) |
577 | 576 | if err != nil {
|
578 | 577 | cmd.err = err
|
579 | 578 | return err
|
@@ -613,7 +612,7 @@ func (cmd *StringStringMapCmd) String() string {
|
613 | 612 | }
|
614 | 613 |
|
615 | 614 | func (cmd *StringStringMapCmd) readReply(cn *pool.Conn) error {
|
616 |
| - v, err := readArrayReply(cn, stringStringMapParser) |
| 615 | + v, err := cn.Rd.ReadArrayReply(stringStringMapParser) |
617 | 616 | if err != nil {
|
618 | 617 | cmd.err = err
|
619 | 618 | return err
|
@@ -653,7 +652,7 @@ func (cmd *StringIntMapCmd) reset() {
|
653 | 652 | }
|
654 | 653 |
|
655 | 654 | func (cmd *StringIntMapCmd) readReply(cn *pool.Conn) error {
|
656 |
| - v, err := readArrayReply(cn, stringIntMapParser) |
| 655 | + v, err := cn.Rd.ReadArrayReply(stringIntMapParser) |
657 | 656 | if err != nil {
|
658 | 657 | cmd.err = err
|
659 | 658 | return err
|
@@ -693,7 +692,7 @@ func (cmd *ZSliceCmd) String() string {
|
693 | 692 | }
|
694 | 693 |
|
695 | 694 | func (cmd *ZSliceCmd) readReply(cn *pool.Conn) error {
|
696 |
| - v, err := readArrayReply(cn, zSliceParser) |
| 695 | + v, err := cn.Rd.ReadArrayReply(zSliceParser) |
697 | 696 | if err != nil {
|
698 | 697 | cmd.err = err
|
699 | 698 | return err
|
@@ -737,7 +736,7 @@ func (cmd *ScanCmd) String() string {
|
737 | 736 | }
|
738 | 737 |
|
739 | 738 | func (cmd *ScanCmd) readReply(cn *pool.Conn) error {
|
740 |
| - page, cursor, err := readScanReply(cn) |
| 739 | + page, cursor, err := cn.Rd.ReadScanReply() |
741 | 740 | if err != nil {
|
742 | 741 | cmd.err = err
|
743 | 742 | return cmd.err
|
@@ -789,7 +788,7 @@ func (cmd *ClusterSlotsCmd) reset() {
|
789 | 788 | }
|
790 | 789 |
|
791 | 790 | func (cmd *ClusterSlotsCmd) readReply(cn *pool.Conn) error {
|
792 |
| - v, err := readArrayReply(cn, clusterSlotsParser) |
| 791 | + v, err := cn.Rd.ReadArrayReply(clusterSlotsParser) |
793 | 792 | if err != nil {
|
794 | 793 | cmd.err = err
|
795 | 794 | return err
|
@@ -874,7 +873,7 @@ func (cmd *GeoLocationCmd) String() string {
|
874 | 873 | }
|
875 | 874 |
|
876 | 875 | 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)) |
878 | 877 | if err != nil {
|
879 | 878 | cmd.err = err
|
880 | 879 | return err
|
@@ -924,7 +923,7 @@ func (cmd *CommandsInfoCmd) reset() {
|
924 | 923 | }
|
925 | 924 |
|
926 | 925 | func (cmd *CommandsInfoCmd) readReply(cn *pool.Conn) error {
|
927 |
| - v, err := readArrayReply(cn, commandInfoSliceParser) |
| 926 | + v, err := cn.Rd.ReadArrayReply(commandInfoSliceParser) |
928 | 927 | if err != nil {
|
929 | 928 | cmd.err = err
|
930 | 929 | return err
|
|
0 commit comments