33
33
type Cmder interface {
34
34
args () []interface {}
35
35
arg (int ) string
36
+ name () string
36
37
37
38
readReply (* pool.Conn ) error
38
39
setErr (error )
@@ -83,7 +84,7 @@ func cmdString(cmd Cmder, val interface{}) string {
83
84
}
84
85
85
86
func cmdFirstKeyPos (cmd Cmder , info * CommandInfo ) int {
86
- switch cmd .arg ( 0 ) {
87
+ switch cmd .name ( ) {
87
88
case "eval" , "evalsha" :
88
89
if cmd .arg (2 ) != "0" {
89
90
return 3
@@ -92,7 +93,7 @@ func cmdFirstKeyPos(cmd Cmder, info *CommandInfo) int {
92
93
}
93
94
}
94
95
if info == nil {
95
- internal .Logf ("info for cmd=%s not found" , cmd .arg ( 0 ))
96
+ internal .Logf ("info for cmd=%s not found" , cmd .name ( ))
96
97
return - 1
97
98
}
98
99
return int (info .FirstKeyPos )
@@ -126,6 +127,16 @@ func (cmd *baseCmd) arg(pos int) string {
126
127
return s
127
128
}
128
129
130
+ func (cmd * baseCmd ) name () string {
131
+ if len (cmd ._args ) > 0 {
132
+ // Cmd name must be lower cased.
133
+ s := internal .ToLower (cmd .arg (0 ))
134
+ cmd ._args [0 ] = s
135
+ return s
136
+ }
137
+ return ""
138
+ }
139
+
129
140
func (cmd * baseCmd ) readTimeout () * time.Duration {
130
141
return cmd ._readTimeout
131
142
}
@@ -156,7 +167,7 @@ type Cmd struct {
156
167
157
168
func NewCmd (args ... interface {}) * Cmd {
158
169
return & Cmd {
159
- baseCmd : newBaseCmd ( args ) ,
170
+ baseCmd : baseCmd { _args : args } ,
160
171
}
161
172
}
162
173
@@ -193,8 +204,9 @@ type SliceCmd struct {
193
204
}
194
205
195
206
func NewSliceCmd (args ... interface {}) * SliceCmd {
196
- cmd := newBaseCmd (args )
197
- return & SliceCmd {baseCmd : cmd }
207
+ return & SliceCmd {
208
+ baseCmd : baseCmd {_args : args },
209
+ }
198
210
}
199
211
200
212
func (cmd * SliceCmd ) Val () []interface {} {
@@ -228,8 +240,9 @@ type StatusCmd struct {
228
240
}
229
241
230
242
func NewStatusCmd (args ... interface {}) * StatusCmd {
231
- cmd := newBaseCmd (args )
232
- return & StatusCmd {baseCmd : cmd }
243
+ return & StatusCmd {
244
+ baseCmd : baseCmd {_args : args },
245
+ }
233
246
}
234
247
235
248
func (cmd * StatusCmd ) Val () string {
@@ -258,8 +271,9 @@ type IntCmd struct {
258
271
}
259
272
260
273
func NewIntCmd (args ... interface {}) * IntCmd {
261
- cmd := newBaseCmd (args )
262
- return & IntCmd {baseCmd : cmd }
274
+ return & IntCmd {
275
+ baseCmd : baseCmd {_args : args },
276
+ }
263
277
}
264
278
265
279
func (cmd * IntCmd ) Val () int64 {
@@ -289,10 +303,9 @@ type DurationCmd struct {
289
303
}
290
304
291
305
func NewDurationCmd (precision time.Duration , args ... interface {}) * DurationCmd {
292
- cmd := newBaseCmd (args )
293
306
return & DurationCmd {
307
+ baseCmd : baseCmd {_args : args },
294
308
precision : precision ,
295
- baseCmd : cmd ,
296
309
}
297
310
}
298
311
@@ -327,9 +340,8 @@ type TimeCmd struct {
327
340
}
328
341
329
342
func NewTimeCmd (args ... interface {}) * TimeCmd {
330
- cmd := newBaseCmd (args )
331
343
return & TimeCmd {
332
- baseCmd : cmd ,
344
+ baseCmd : baseCmd { _args : args } ,
333
345
}
334
346
}
335
347
@@ -364,8 +376,9 @@ type BoolCmd struct {
364
376
}
365
377
366
378
func NewBoolCmd (args ... interface {}) * BoolCmd {
367
- cmd := newBaseCmd (args )
368
- return & BoolCmd {baseCmd : cmd }
379
+ return & BoolCmd {
380
+ baseCmd : baseCmd {_args : args },
381
+ }
369
382
}
370
383
371
384
func (cmd * BoolCmd ) Val () bool {
@@ -414,16 +427,17 @@ func (cmd *BoolCmd) readReply(cn *pool.Conn) error {
414
427
type StringCmd struct {
415
428
baseCmd
416
429
417
- val string
430
+ val [] byte
418
431
}
419
432
420
433
func NewStringCmd (args ... interface {}) * StringCmd {
421
- cmd := newBaseCmd (args )
422
- return & StringCmd {baseCmd : cmd }
434
+ return & StringCmd {
435
+ baseCmd : baseCmd {_args : args },
436
+ }
423
437
}
424
438
425
439
func (cmd * StringCmd ) Val () string {
426
- return cmd .val
440
+ return internal . BytesToString ( cmd .val )
427
441
}
428
442
429
443
func (cmd * StringCmd ) Result () (string , error ) {
@@ -467,7 +481,7 @@ func (cmd *StringCmd) String() string {
467
481
}
468
482
469
483
func (cmd * StringCmd ) readReply (cn * pool.Conn ) error {
470
- cmd .val , cmd .err = cn .Rd .ReadStringReply ()
484
+ cmd .val , cmd .err = cn .Rd .ReadBytesReply ()
471
485
return cmd .err
472
486
}
473
487
@@ -480,8 +494,9 @@ type FloatCmd struct {
480
494
}
481
495
482
496
func NewFloatCmd (args ... interface {}) * FloatCmd {
483
- cmd := newBaseCmd (args )
484
- return & FloatCmd {baseCmd : cmd }
497
+ return & FloatCmd {
498
+ baseCmd : baseCmd {_args : args },
499
+ }
485
500
}
486
501
487
502
func (cmd * FloatCmd ) Val () float64 {
@@ -510,8 +525,9 @@ type StringSliceCmd struct {
510
525
}
511
526
512
527
func NewStringSliceCmd (args ... interface {}) * StringSliceCmd {
513
- cmd := newBaseCmd (args )
514
- return & StringSliceCmd {baseCmd : cmd }
528
+ return & StringSliceCmd {
529
+ baseCmd : baseCmd {_args : args },
530
+ }
515
531
}
516
532
517
533
func (cmd * StringSliceCmd ) Val () []string {
@@ -545,8 +561,9 @@ type BoolSliceCmd struct {
545
561
}
546
562
547
563
func NewBoolSliceCmd (args ... interface {}) * BoolSliceCmd {
548
- cmd := newBaseCmd (args )
549
- return & BoolSliceCmd {baseCmd : cmd }
564
+ return & BoolSliceCmd {
565
+ baseCmd : baseCmd {_args : args },
566
+ }
550
567
}
551
568
552
569
func (cmd * BoolSliceCmd ) Val () []bool {
@@ -580,8 +597,9 @@ type StringStringMapCmd struct {
580
597
}
581
598
582
599
func NewStringStringMapCmd (args ... interface {}) * StringStringMapCmd {
583
- cmd := newBaseCmd (args )
584
- return & StringStringMapCmd {baseCmd : cmd }
600
+ return & StringStringMapCmd {
601
+ baseCmd : baseCmd {_args : args },
602
+ }
585
603
}
586
604
587
605
func (cmd * StringStringMapCmd ) Val () map [string ]string {
@@ -615,8 +633,9 @@ type StringIntMapCmd struct {
615
633
}
616
634
617
635
func NewStringIntMapCmd (args ... interface {}) * StringIntMapCmd {
618
- cmd := newBaseCmd (args )
619
- return & StringIntMapCmd {baseCmd : cmd }
636
+ return & StringIntMapCmd {
637
+ baseCmd : baseCmd {_args : args },
638
+ }
620
639
}
621
640
622
641
func (cmd * StringIntMapCmd ) Val () map [string ]int64 {
@@ -650,8 +669,9 @@ type ZSliceCmd struct {
650
669
}
651
670
652
671
func NewZSliceCmd (args ... interface {}) * ZSliceCmd {
653
- cmd := newBaseCmd (args )
654
- return & ZSliceCmd {baseCmd : cmd }
672
+ return & ZSliceCmd {
673
+ baseCmd : baseCmd {_args : args },
674
+ }
655
675
}
656
676
657
677
func (cmd * ZSliceCmd ) Val () []Z {
@@ -689,7 +709,7 @@ type ScanCmd struct {
689
709
690
710
func NewScanCmd (process func (cmd Cmder ) error , args ... interface {}) * ScanCmd {
691
711
return & ScanCmd {
692
- baseCmd : newBaseCmd ( args ) ,
712
+ baseCmd : baseCmd { _args : args } ,
693
713
process : process ,
694
714
}
695
715
}
@@ -738,8 +758,9 @@ type ClusterSlotsCmd struct {
738
758
}
739
759
740
760
func NewClusterSlotsCmd (args ... interface {}) * ClusterSlotsCmd {
741
- cmd := newBaseCmd (args )
742
- return & ClusterSlotsCmd {baseCmd : cmd }
761
+ return & ClusterSlotsCmd {
762
+ baseCmd : baseCmd {_args : args },
763
+ }
743
764
}
744
765
745
766
func (cmd * ClusterSlotsCmd ) Val () []ClusterSlot {
@@ -857,8 +878,9 @@ type GeoPosCmd struct {
857
878
}
858
879
859
880
func NewGeoPosCmd (args ... interface {}) * GeoPosCmd {
860
- cmd := newBaseCmd (args )
861
- return & GeoPosCmd {baseCmd : cmd }
881
+ return & GeoPosCmd {
882
+ baseCmd : baseCmd {_args : args },
883
+ }
862
884
}
863
885
864
886
func (cmd * GeoPosCmd ) Val () []* GeoPos {
@@ -902,8 +924,9 @@ type CommandsInfoCmd struct {
902
924
}
903
925
904
926
func NewCommandsInfoCmd (args ... interface {}) * CommandsInfoCmd {
905
- cmd := newBaseCmd (args )
906
- return & CommandsInfoCmd {baseCmd : cmd }
927
+ return & CommandsInfoCmd {
928
+ baseCmd : baseCmd {_args : args },
929
+ }
907
930
}
908
931
909
932
func (cmd * CommandsInfoCmd ) Val () map [string ]* CommandInfo {
0 commit comments