ruby-redis 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/redis/reader.rb CHANGED
@@ -1,29 +1,39 @@
1
- require File.expand_path '../redis', File.dirname(__FILE__)
2
-
3
- class Redis
4
-
5
- # This is almost as fast as hiredis/reader plus it supports servers
1
+ module Redis
6
2
  class Reader < Array
7
3
 
8
4
  # Minimize the amount of memory copying. The primary
9
5
  # performance trick is to String#split and work with that.
6
+ # This is almost as fast as hiredis/reader plus it supports servers
10
7
 
11
- #TODO configurable limits
12
- #TODO max buffer size based on limits
13
-
14
- def initialize
8
+ def initialize options={}
15
9
  super()
10
+ @multibulk_limit = options[:multibulk_limit] || 1024*1024
11
+ @bulk_limit = options[:bulk_limit] || 512*1024*1024
12
+ @buffer_overflow = false
16
13
  flush
17
14
  end
18
15
 
19
- alias :feed :push
16
+ def feed data
17
+ return if @buffer_overflow
18
+ if reduce(0){|t,e|t+e.bytesize} > @bulk_limit + 2
19
+ @buffer_overflow = true
20
+ flush
21
+ return
22
+ end
23
+ push data
24
+ end
20
25
 
21
26
  def gets
27
+ raise 'buffer overflow' if @buffer_overflow
22
28
  if @completed.empty?
23
29
  unshift_split if @split
24
30
  frame do |str|
25
31
  @elements << str
26
- if @remaining > 0
32
+ if @remaining != 0
33
+ if @remaining < 0
34
+ @remaining = -@remaining
35
+ @elements = str
36
+ end
27
37
  @remaining -= 1
28
38
  if @remaining == 0 and !@stack.empty?
29
39
  elements = @elements
@@ -33,8 +43,6 @@ class Redis
33
43
  end
34
44
  next unless @remaining == 0
35
45
  @completed << @elements
36
- elsif @remaining < 0
37
- @completed << nil
38
46
  elsif !@elements.empty?
39
47
  @completed << @elements[0]
40
48
  end
@@ -85,9 +93,12 @@ class Redis
85
93
  when '*'
86
94
  prev_remaining = @remaining
87
95
  @remaining = line[1..-1].to_i
88
- if @remaining == -1
96
+ if @remaining == 0
97
+ @remaining = -1
98
+ yield []
99
+ elsif @remaining == -1
89
100
  yield nil
90
- elsif @remaining > 1024*1024
101
+ elsif @remaining > @multibulk_limit
91
102
  flush
92
103
  raise 'invalid multibulk length'
93
104
  elsif prev_remaining > 0
@@ -99,14 +110,14 @@ class Redis
99
110
  if @binary_size == -1
100
111
  @binary_size = nil
101
112
  yield nil
102
- elsif (@binary_size == 0 and line[1..1] != '0') or @binary_size < 0 or @binary_size > 512*1024*1024
113
+ elsif (@binary_size == 0 and line[1..1] != '0') or @binary_size < 0 or @binary_size > @bulk_limit
103
114
  flush
104
115
  raise 'invalid bulk length'
105
116
  end
106
117
  else
107
118
  if @remaining > 0
108
119
  flush
109
- raise "expected '$', got '#{line[0].chr}'"
120
+ raise "expected \"$\", got #{line[0].chr.dump}"
110
121
  end
111
122
  parts = line.split(' ')
112
123
  @remaining = parts.size
data/lib/redis/reader.rbc CHANGED
@@ -9,57 +9,31 @@ x
9
9
  10
10
10
  __script__
11
11
  i
12
- 54
13
- 5
14
- 45
15
- 0
16
- 1
12
+ 28
13
+ 99
17
14
  7
18
- 2
19
- 64
20
- 45
21
15
  0
22
- 3
23
16
  65
24
17
  49
25
- 4
26
- 0
27
- 49
28
- 5
29
18
  1
30
- 49
31
- 6
32
19
  2
33
- 47
34
- 49
35
- 7
36
- 1
37
- 15
38
- 99
39
- 7
40
- 8
41
- 1
42
- 65
43
- 49
44
- 9
45
- 3
46
20
  13
47
21
  99
48
22
  12
49
23
  7
50
- 10
24
+ 2
51
25
  12
52
26
  7
53
- 11
27
+ 3
54
28
  12
55
29
  65
56
30
  12
57
31
  49
58
- 12
32
+ 4
59
33
  4
60
34
  15
61
35
  49
62
- 10
36
+ 2
63
37
  0
64
38
  15
65
39
  2
@@ -74,36 +48,16 @@ I
74
48
  0
75
49
  n
76
50
  p
77
- 13
78
- x
79
- 4
80
- File
81
- n
82
- s
83
- 8
84
- ../redis
85
- n
86
- x
87
- 11
88
- active_path
89
- x
90
- 7
91
- dirname
92
- x
93
- 11
94
- expand_path
95
- x
96
- 7
97
- require
51
+ 5
98
52
  x
99
53
  5
100
54
  Redis
101
55
  x
102
- 10
103
- open_class
56
+ 11
57
+ open_module
104
58
  x
105
- 14
106
- __class_init__
59
+ 15
60
+ __module_init__
107
61
  M
108
62
  1
109
63
  n
@@ -317,54 +271,165 @@ x
317
271
  10
318
272
  initialize
319
273
  i
320
- 9
274
+ 74
275
+ 23
276
+ 0
277
+ 10
278
+ 14
279
+ 44
280
+ 43
281
+ 0
282
+ 78
283
+ 49
284
+ 1
285
+ 1
286
+ 19
287
+ 0
288
+ 15
321
289
  54
322
290
  52
291
+ 2
323
292
  0
293
+ 15
294
+ 20
324
295
  0
296
+ 7
297
+ 3
298
+ 49
299
+ 4
300
+ 1
301
+ 13
302
+ 10
303
+ 37
325
304
  15
305
+ 7
326
306
  5
327
- 48
307
+ 7
308
+ 5
309
+ 49
310
+ 6
328
311
  1
312
+ 38
313
+ 7
314
+ 15
315
+ 20
316
+ 0
317
+ 7
318
+ 8
319
+ 49
320
+ 4
321
+ 1
322
+ 13
323
+ 10
324
+ 63
325
+ 15
326
+ 7
327
+ 9
328
+ 7
329
+ 5
330
+ 49
331
+ 6
332
+ 1
333
+ 7
334
+ 5
335
+ 49
336
+ 6
337
+ 1
338
+ 38
339
+ 10
340
+ 15
341
+ 3
342
+ 38
343
+ 11
344
+ 15
345
+ 5
346
+ 48
347
+ 12
329
348
  11
330
349
  I
331
- 1
350
+ 3
332
351
  I
333
- 0
352
+ 1
334
353
  I
335
354
  0
336
355
  I
337
- 0
356
+ 1
338
357
  n
339
358
  p
340
- 2
359
+ 13
360
+ x
361
+ 4
362
+ Hash
363
+ x
364
+ 16
365
+ new_from_literal
341
366
  x
342
367
  10
343
368
  initialize
344
369
  x
370
+ 15
371
+ multibulk_limit
372
+ x
373
+ 2
374
+ []
375
+ I
376
+ 400
377
+ x
378
+ 1
379
+ *
380
+ x
381
+ 16
382
+ @multibulk_limit
383
+ x
384
+ 10
385
+ bulk_limit
386
+ I
387
+ 200
388
+ x
389
+ 11
390
+ @bulk_limit
391
+ x
392
+ 16
393
+ @buffer_overflow
394
+ x
345
395
  5
346
396
  flush
347
397
  p
348
- 7
398
+ 13
349
399
  I
350
400
  -1
351
401
  I
402
+ 8
403
+ I
352
404
  e
353
405
  I
354
- 0
406
+ 9
355
407
  I
356
- f
408
+ 13
357
409
  I
358
- 5
410
+ a
359
411
  I
360
- 10
412
+ 28
361
413
  I
362
- 9
414
+ b
415
+ I
416
+ 42
417
+ I
418
+ c
419
+ I
420
+ 46
421
+ I
422
+ d
423
+ I
424
+ 4a
363
425
  x
364
426
  52
365
427
  /Users/dturnbull/ruby/ruby-redis/lib/redis/reader.rb
366
428
  p
367
- 0
429
+ 1
430
+ x
431
+ 7
432
+ options
368
433
  x
369
434
  17
370
435
  method_visibility
@@ -382,16 +447,46 @@ x
382
447
  4
383
448
  feed
384
449
  i
385
- 19
450
+ 49
386
451
  39
387
452
  0
388
453
  9
454
+ 8
455
+ 1
456
+ 11
457
+ 8
389
458
  9
459
+ 1
460
+ 15
461
+ 5
462
+ 78
463
+ 56
464
+ 1
465
+ 47
466
+ 50
467
+ 2
468
+ 1
469
+ 39
470
+ 3
471
+ 80
472
+ 81
473
+ 4
474
+ 85
475
+ 5
476
+ 9
477
+ 39
478
+ 2
479
+ 38
480
+ 0
481
+ 15
390
482
  5
391
483
  48
484
+ 6
485
+ 15
392
486
  1
487
+ 11
393
488
  8
394
- 10
489
+ 40
395
490
  1
396
491
  15
397
492
  5
@@ -399,11 +494,11 @@ i
399
494
  0
400
495
  47
401
496
  49
402
- 2
497
+ 7
403
498
  1
404
499
  11
405
500
  I
406
- 3
501
+ 4
407
502
  I
408
503
  1
409
504
  I
@@ -412,36 +507,142 @@ I
412
507
  1
413
508
  n
414
509
  p
510
+ 8
511
+ x
512
+ 16
513
+ @buffer_overflow
514
+ M
515
+ 1
516
+ p
517
+ 2
518
+ x
519
+ 9
520
+ for_block
521
+ t
522
+ n
523
+ x
524
+ 4
525
+ feed
526
+ i
527
+ 20
528
+ 58
529
+ 37
530
+ 19
531
+ 0
532
+ 15
533
+ 37
534
+ 19
535
+ 1
536
+ 15
537
+ 15
538
+ 20
539
+ 0
540
+ 20
541
+ 1
542
+ 49
543
+ 0
544
+ 0
545
+ 81
546
+ 1
547
+ 11
548
+ I
549
+ 5
550
+ I
551
+ 2
552
+ I
553
+ 2
554
+ I
555
+ 2
556
+ n
557
+ p
558
+ 2
559
+ x
560
+ 8
561
+ bytesize
562
+ x
563
+ 1
564
+ +
565
+ p
415
566
  3
567
+ I
568
+ 0
569
+ I
570
+ 12
571
+ I
572
+ 14
573
+ x
574
+ 52
575
+ /Users/dturnbull/ruby/ruby-redis/lib/redis/reader.rb
576
+ p
577
+ 2
578
+ x
579
+ 1
580
+ t
581
+ x
582
+ 1
583
+ e
416
584
  x
417
585
  6
418
- @split
586
+ reduce
419
587
  x
420
- 13
421
- unshift_split
588
+ 11
589
+ @bulk_limit
590
+ x
591
+ 1
592
+ +
593
+ x
594
+ 1
595
+ >
596
+ x
597
+ 5
598
+ flush
422
599
  x
423
600
  4
424
601
  push
425
602
  p
426
- 9
603
+ 21
427
604
  I
428
605
  -1
429
606
  I
430
- 13
607
+ 10
431
608
  I
432
609
  0
433
610
  I
434
- 14
611
+ 11
435
612
  I
436
- a
613
+ 9
437
614
  I
438
615
  0
439
616
  I
440
- b
617
+ a
441
618
  I
442
- 15
619
+ 12
620
+ I
621
+ 1b
443
622
  I
444
623
  13
624
+ I
625
+ 1f
626
+ I
627
+ 14
628
+ I
629
+ 23
630
+ I
631
+ 15
632
+ I
633
+ 27
634
+ I
635
+ 12
636
+ I
637
+ 28
638
+ I
639
+ 0
640
+ I
641
+ 29
642
+ I
643
+ 17
644
+ I
645
+ 31
445
646
  x
446
647
  52
447
648
  /Users/dturnbull/ruby/ruby-redis/lib/redis/reader.rb
@@ -461,32 +662,69 @@ x
461
662
  4
462
663
  gets
463
664
  i
464
- 27
665
+ 64
666
+ 39
667
+ 0
668
+ 9
669
+ 14
465
670
  5
466
- 56
671
+ 7
672
+ 1
673
+ 64
674
+ 47
675
+ 49
676
+ 2
677
+ 1
678
+ 8
679
+ 15
680
+ 1
681
+ 15
682
+ 39
683
+ 3
684
+ 49
685
+ 4
467
686
  0
687
+ 9
688
+ 43
689
+ 39
690
+ 5
691
+ 9
692
+ 32
693
+ 5
694
+ 48
695
+ 6
696
+ 8
697
+ 33
698
+ 1
699
+ 15
700
+ 5
701
+ 56
702
+ 7
468
703
  47
469
704
  50
470
- 1
705
+ 8
471
706
  0
707
+ 8
708
+ 44
709
+ 1
472
710
  15
473
711
  39
474
- 2
475
- 49
476
712
  3
713
+ 49
714
+ 4
477
715
  0
478
716
  9
479
- 19
717
+ 56
480
718
  3
481
719
  11
482
720
  8
483
- 20
721
+ 57
484
722
  1
485
723
  15
486
724
  39
487
- 2
725
+ 3
488
726
  49
489
- 4
727
+ 9
490
728
  0
491
729
  11
492
730
  I
@@ -499,7 +737,28 @@ I
499
737
  0
500
738
  n
501
739
  p
740
+ 10
741
+ x
742
+ 16
743
+ @buffer_overflow
744
+ s
745
+ 15
746
+ buffer overflow
747
+ x
502
748
  5
749
+ raise
750
+ x
751
+ 10
752
+ @completed
753
+ x
754
+ 6
755
+ empty?
756
+ x
757
+ 6
758
+ @split
759
+ x
760
+ 13
761
+ unshift_split
503
762
  M
504
763
  1
505
764
  p
@@ -513,7 +772,7 @@ x
513
772
  4
514
773
  gets
515
774
  i
516
- 164
775
+ 172
517
776
  57
518
777
  19
519
778
  0
@@ -529,15 +788,67 @@ i
529
788
  39
530
789
  2
531
790
  78
532
- 85
791
+ 83
533
792
  3
534
793
  9
535
- 112
794
+ 48
795
+ 39
796
+ 0
797
+ 49
798
+ 4
799
+ 0
800
+ 10
801
+ 29
802
+ 2
803
+ 8
804
+ 30
805
+ 3
806
+ 9
807
+ 45
808
+ 39
809
+ 5
810
+ 39
811
+ 0
812
+ 78
813
+ 49
814
+ 6
815
+ 1
816
+ 49
817
+ 1
818
+ 1
819
+ 8
820
+ 46
821
+ 1
822
+ 8
823
+ 162
824
+ 39
825
+ 2
826
+ 78
827
+ 84
828
+ 7
829
+ 9
830
+ 69
831
+ 39
832
+ 2
833
+ 49
834
+ 8
835
+ 0
836
+ 38
837
+ 2
838
+ 15
839
+ 20
840
+ 0
841
+ 38
842
+ 0
843
+ 8
844
+ 70
845
+ 1
846
+ 15
536
847
  39
537
848
  2
538
849
  79
539
850
  82
540
- 4
851
+ 9
541
852
  38
542
853
  2
543
854
  15
@@ -545,33 +856,33 @@ i
545
856
  2
546
857
  78
547
858
  83
548
- 5
859
+ 3
549
860
  13
550
861
  9
551
- 47
862
+ 99
552
863
  15
553
864
  39
554
- 6
865
+ 10
555
866
  49
556
- 7
867
+ 4
557
868
  0
558
869
  10
559
- 46
870
+ 98
560
871
  2
561
872
  8
562
- 47
873
+ 99
563
874
  3
564
875
  9
565
- 88
876
+ 140
566
877
  39
567
878
  0
568
879
  19
569
880
  1
570
881
  15
571
882
  39
572
- 6
883
+ 10
573
884
  49
574
- 8
885
+ 11
575
886
  0
576
887
  97
577
888
  37
@@ -597,77 +908,33 @@ i
597
908
  2
598
909
  79
599
910
  82
600
- 4
911
+ 9
601
912
  38
602
913
  2
603
914
  8
604
- 89
915
+ 141
605
916
  1
606
917
  15
607
918
  39
608
919
  2
609
920
  78
610
921
  83
611
- 5
922
+ 3
612
923
  9
613
- 100
924
+ 152
614
925
  1
615
926
  8
616
- 102
927
+ 154
617
928
  1
618
929
  11
619
930
  15
620
931
  39
621
- 9
622
- 39
623
- 0
624
- 49
625
- 1
626
- 1
627
- 8
628
- 154
629
- 39
630
- 2
631
- 78
632
- 84
633
- 10
634
- 9
635
- 127
636
- 39
637
- 9
638
- 1
639
- 49
640
- 1
641
- 1
642
- 8
643
- 154
644
- 39
645
- 0
646
- 49
647
- 7
648
- 0
649
- 10
650
- 137
651
- 2
652
- 8
653
- 138
654
- 3
655
- 9
656
- 153
657
- 39
658
- 9
932
+ 5
659
933
  39
660
934
  0
661
- 78
662
- 49
663
- 11
664
- 1
665
935
  49
666
936
  1
667
937
  1
668
- 8
669
- 154
670
- 1
671
938
  15
672
939
  35
673
940
  0
@@ -699,110 +966,118 @@ x
699
966
  10
700
967
  @remaining
701
968
  x
702
- 1
703
- >
704
- x
705
- 1
706
- -
707
- x
708
969
  2
709
970
  ==
710
971
  x
711
972
  6
712
- @stack
713
- x
714
- 6
715
973
  empty?
716
974
  x
717
- 3
718
- pop
719
- x
720
975
  10
721
976
  @completed
722
977
  x
978
+ 2
979
+ []
980
+ x
723
981
  1
724
982
  <
725
983
  x
726
984
  2
727
- []
985
+ -@
986
+ x
987
+ 1
988
+ -
989
+ x
990
+ 6
991
+ @stack
992
+ x
993
+ 3
994
+ pop
728
995
  p
729
- 45
996
+ 53
730
997
  I
731
998
  0
732
999
  I
733
- 1c
1000
+ 1e
734
1001
  I
735
1002
  4
736
1003
  I
737
- 1d
1004
+ 1f
738
1005
  I
739
1006
  c
740
1007
  I
741
- 1e
1008
+ 20
742
1009
  I
743
1010
  13
744
1011
  I
745
- 1f
746
- I
747
- 1b
1012
+ 2e
748
1013
  I
749
1014
  20
750
1015
  I
751
- 31
1016
+ 2f
1017
+ I
1018
+ 2d
1019
+ I
1020
+ 2e
1021
+ I
1022
+ 2e
1023
+ I
1024
+ 0
1025
+ I
1026
+ 30
752
1027
  I
753
1028
  21
754
1029
  I
755
- 36
1030
+ 37
756
1031
  I
757
1032
  22
758
1033
  I
759
- 47
1034
+ 3f
760
1035
  I
761
1036
  23
762
1037
  I
763
- 4f
764
- I
765
- 24
766
- I
767
- 58
1038
+ 45
768
1039
  I
769
- 20
1040
+ 21
770
1041
  I
771
- 59
1042
+ 46
772
1043
  I
773
1044
  0
774
1045
  I
775
- 5a
1046
+ 47
776
1047
  I
777
- 26
1048
+ 25
778
1049
  I
779
- 66
1050
+ 4f
780
1051
  I
781
- 0
1052
+ 26
782
1053
  I
783
- 67
1054
+ 65
784
1055
  I
785
1056
  27
786
1057
  I
787
- 70
1058
+ 6a
788
1059
  I
789
1060
  28
790
1061
  I
791
- 77
1062
+ 7b
792
1063
  I
793
1064
  29
794
1065
  I
795
- 7f
1066
+ 83
796
1067
  I
797
1068
  2a
798
1069
  I
799
1070
  8c
800
1071
  I
801
- 2b
1072
+ 26
802
1073
  I
803
- 99
1074
+ 8d
804
1075
  I
805
- 2a
1076
+ 0
1077
+ I
1078
+ 8e
1079
+ I
1080
+ 2c
806
1081
  I
807
1082
  9a
808
1083
  I
@@ -812,11 +1087,19 @@ I
812
1087
  I
813
1088
  2d
814
1089
  I
815
- a0
1090
+ a2
816
1091
  I
817
- 2e
1092
+ 0
1093
+ I
1094
+ a3
1095
+ I
1096
+ 31
818
1097
  I
819
- a4
1098
+ a8
1099
+ I
1100
+ 32
1101
+ I
1102
+ ac
820
1103
  x
821
1104
  52
822
1105
  /Users/dturnbull/ruby/ruby-redis/lib/redis/reader.rb
@@ -832,38 +1115,60 @@ x
832
1115
  5
833
1116
  frame
834
1117
  x
835
- 10
836
- @completed
837
- x
838
- 6
839
- empty?
840
- x
841
1118
  5
842
1119
  shift
843
1120
  p
844
- 11
1121
+ 25
845
1122
  I
846
1123
  -1
847
1124
  I
1125
+ 1a
1126
+ I
1127
+ 0
1128
+ I
848
1129
  1b
849
1130
  I
1131
+ f
1132
+ I
850
1133
  0
851
1134
  I
1135
+ 10
1136
+ I
852
1137
  1c
853
1138
  I
854
- 8
1139
+ 17
855
1140
  I
856
- 30
1141
+ 1d
857
1142
  I
858
- 14
1143
+ 21
859
1144
  I
860
1145
  0
861
1146
  I
862
- 15
1147
+ 22
863
1148
  I
864
- 31
1149
+ 1e
865
1150
  I
866
- 1b
1151
+ 2b
1152
+ I
1153
+ 1c
1154
+ I
1155
+ 2c
1156
+ I
1157
+ 0
1158
+ I
1159
+ 2d
1160
+ I
1161
+ 35
1162
+ I
1163
+ 39
1164
+ I
1165
+ 0
1166
+ I
1167
+ 3a
1168
+ I
1169
+ 36
1170
+ I
1171
+ 40
867
1172
  x
868
1173
  52
869
1174
  /Users/dturnbull/ruby/ruby-redis/lib/redis/reader.rb
@@ -959,39 +1264,39 @@ p
959
1264
  I
960
1265
  -1
961
1266
  I
962
- 36
1267
+ 3b
963
1268
  I
964
1269
  0
965
1270
  I
966
- 37
1271
+ 3c
967
1272
  I
968
1273
  4
969
1274
  I
970
- 38
1275
+ 3d
971
1276
  I
972
1277
  8
973
1278
  I
974
- 39
1279
+ 3e
975
1280
  I
976
1281
  c
977
1282
  I
978
- 3a
1283
+ 3f
979
1284
  I
980
1285
  10
981
1286
  I
982
- 3b
1287
+ 40
983
1288
  I
984
1289
  15
985
1290
  I
986
- 3c
1291
+ 41
987
1292
  I
988
1293
  1a
989
1294
  I
990
- 3d
1295
+ 42
991
1296
  I
992
1297
  1f
993
1298
  I
994
- 3e
1299
+ 43
995
1300
  I
996
1301
  23
997
1302
  x
@@ -1058,15 +1363,15 @@ p
1058
1363
  I
1059
1364
  -1
1060
1365
  I
1061
- 41
1366
+ 46
1062
1367
  I
1063
1368
  0
1064
1369
  I
1065
- 42
1370
+ 47
1066
1371
  I
1067
1372
  e
1068
1373
  I
1069
- 43
1374
+ 48
1070
1375
  I
1071
1376
  12
1072
1377
  x
@@ -1085,10 +1390,10 @@ x
1085
1390
  5
1086
1391
  frame
1087
1392
  i
1088
- 492
1393
+ 495
1089
1394
  2
1090
1395
  9
1091
- 490
1396
+ 493
1092
1397
  39
1093
1398
  0
1094
1399
  9
@@ -1112,7 +1417,7 @@ i
1112
1417
  27
1113
1418
  1
1114
1419
  8
1115
- 491
1420
+ 494
1116
1421
  15
1117
1422
  1
1118
1423
  38
@@ -1123,7 +1428,7 @@ i
1123
1428
  60
1124
1429
  1
1125
1430
  8
1126
- 486
1431
+ 489
1127
1432
  5
1128
1433
  48
1129
1434
  2
@@ -1139,7 +1444,7 @@ i
1139
1444
  54
1140
1445
  1
1141
1446
  8
1142
- 491
1447
+ 494
1143
1448
  15
1144
1449
  20
1145
1450
  1
@@ -1218,7 +1523,7 @@ i
1218
1523
  60
1219
1524
  1
1220
1525
  8
1221
- 486
1526
+ 489
1222
1527
  13
1223
1528
  7
1224
1529
  12
@@ -1246,7 +1551,7 @@ i
1246
1551
  60
1247
1552
  1
1248
1553
  8
1249
- 486
1554
+ 489
1250
1555
  13
1251
1556
  7
1252
1557
  13
@@ -1277,7 +1582,7 @@ i
1277
1582
  60
1278
1583
  1
1279
1584
  8
1280
- 486
1585
+ 489
1281
1586
  13
1282
1587
  7
1283
1588
  15
@@ -1287,7 +1592,7 @@ i
1287
1592
  7
1288
1593
  1
1289
1594
  9
1290
- 294
1595
+ 306
1291
1596
  15
1292
1597
  39
1293
1598
  16
@@ -1315,81 +1620,93 @@ i
1315
1620
  15
1316
1621
  39
1317
1622
  16
1623
+ 78
1624
+ 83
1625
+ 17
1626
+ 9
1627
+ 244
1628
+ 77
1629
+ 38
1630
+ 16
1631
+ 15
1632
+ 35
1633
+ 0
1634
+ 60
1635
+ 1
1636
+ 8
1637
+ 304
1638
+ 39
1639
+ 16
1318
1640
  77
1319
1641
  83
1320
1642
  17
1321
1643
  9
1322
- 239
1644
+ 256
1323
1645
  1
1324
1646
  60
1325
1647
  1
1326
1648
  8
1327
- 292
1649
+ 304
1328
1650
  39
1329
1651
  16
1330
- 7
1331
- 18
1332
- 7
1652
+ 39
1333
1653
  18
1334
- 49
1335
- 19
1336
- 1
1337
1654
  85
1338
- 20
1655
+ 19
1339
1656
  9
1340
- 266
1657
+ 278
1341
1658
  5
1342
1659
  48
1343
- 21
1660
+ 20
1344
1661
  15
1345
1662
  5
1346
1663
  7
1347
- 22
1664
+ 21
1348
1665
  64
1349
1666
  47
1350
1667
  49
1351
- 23
1668
+ 22
1352
1669
  1
1353
1670
  8
1354
- 292
1671
+ 304
1355
1672
  20
1356
1673
  2
1357
1674
  78
1358
1675
  85
1359
- 20
1676
+ 19
1360
1677
  9
1361
- 291
1678
+ 303
1362
1679
  39
1363
- 24
1680
+ 23
1364
1681
  39
1365
- 25
1682
+ 24
1366
1683
  20
1367
1684
  2
1368
1685
  35
1369
1686
  2
1370
1687
  49
1371
- 26
1688
+ 25
1372
1689
  1
1373
1690
  15
1374
1691
  35
1375
1692
  0
1376
1693
  38
1377
- 25
1694
+ 24
1378
1695
  8
1379
- 292
1696
+ 304
1380
1697
  1
1381
1698
  8
1382
- 486
1699
+ 489
1383
1700
  13
1384
1701
  7
1385
- 27
1702
+ 26
1386
1703
  64
1387
1704
  12
1388
1705
  49
1389
1706
  7
1390
1707
  1
1391
1708
  9
1392
- 421
1709
+ 423
1393
1710
  15
1394
1711
  20
1395
1712
  1
@@ -1416,7 +1733,7 @@ i
1416
1733
  83
1417
1734
  17
1418
1735
  9
1419
- 340
1736
+ 352
1420
1737
  1
1421
1738
  38
1422
1739
  0
@@ -1425,7 +1742,7 @@ i
1425
1742
  60
1426
1743
  1
1427
1744
  8
1428
- 419
1745
+ 421
1429
1746
  39
1430
1747
  0
1431
1748
  78
@@ -1433,7 +1750,7 @@ i
1433
1750
  17
1434
1751
  13
1435
1752
  9
1436
- 373
1753
+ 385
1437
1754
  15
1438
1755
  20
1439
1756
  1
@@ -1449,79 +1766,69 @@ i
1449
1766
  5
1450
1767
  1
1451
1768
  7
1452
- 28
1769
+ 27
1453
1770
  64
1454
1771
  83
1455
1772
  17
1456
1773
  10
1457
- 372
1774
+ 384
1458
1775
  2
1459
1776
  8
1460
- 373
1777
+ 385
1461
1778
  3
1462
1779
  13
1463
1780
  10
1464
- 402
1781
+ 404
1465
1782
  15
1466
1783
  39
1467
1784
  0
1468
1785
  78
1469
1786
  84
1470
- 29
1787
+ 28
1471
1788
  13
1472
1789
  10
1473
- 402
1790
+ 404
1474
1791
  15
1475
1792
  39
1476
1793
  0
1477
- 7
1478
- 30
1479
- 7
1480
- 18
1481
- 49
1482
- 19
1483
- 1
1484
- 7
1485
- 18
1486
- 49
1487
- 19
1488
- 1
1794
+ 39
1795
+ 29
1489
1796
  85
1490
- 20
1797
+ 19
1491
1798
  9
1492
- 418
1799
+ 420
1493
1800
  5
1494
1801
  48
1495
- 21
1802
+ 20
1496
1803
  15
1497
1804
  5
1498
1805
  7
1499
- 31
1806
+ 30
1500
1807
  64
1501
1808
  47
1502
1809
  49
1503
- 23
1810
+ 22
1504
1811
  1
1505
1812
  8
1506
- 419
1813
+ 421
1507
1814
  1
1508
1815
  8
1509
- 486
1816
+ 489
1510
1817
  15
1511
1818
  39
1512
1819
  16
1513
1820
  78
1514
1821
  85
1515
- 20
1822
+ 19
1516
1823
  9
1517
- 458
1824
+ 461
1518
1825
  5
1519
1826
  48
1520
- 21
1827
+ 20
1521
1828
  15
1522
1829
  5
1523
1830
  7
1524
- 32
1831
+ 31
1525
1832
  20
1526
1833
  1
1527
1834
  78
@@ -1529,30 +1836,31 @@ i
1529
1836
  5
1530
1837
  1
1531
1838
  49
1839
+ 32
1840
+ 0
1841
+ 49
1532
1842
  33
1533
1843
  0
1534
1844
  47
1535
1845
  101
1536
1846
  34
1537
- 7
1538
- 35
1539
1847
  63
1540
- 3
1848
+ 2
1541
1849
  47
1542
1850
  49
1543
- 23
1851
+ 22
1544
1852
  1
1545
1853
  8
1546
- 459
1854
+ 462
1547
1855
  1
1548
1856
  15
1549
1857
  20
1550
1858
  1
1551
1859
  7
1552
- 36
1860
+ 35
1553
1861
  64
1554
1862
  49
1555
- 37
1863
+ 36
1556
1864
  1
1557
1865
  19
1558
1866
  3
@@ -1560,7 +1868,7 @@ i
1560
1868
  20
1561
1869
  3
1562
1870
  49
1563
- 38
1871
+ 37
1564
1872
  0
1565
1873
  38
1566
1874
  16
@@ -1568,9 +1876,9 @@ i
1568
1876
  20
1569
1877
  3
1570
1878
  56
1571
- 39
1879
+ 38
1572
1880
  50
1573
- 40
1881
+ 39
1574
1882
  0
1575
1883
  15
1576
1884
  68
@@ -1588,7 +1896,7 @@ I
1588
1896
  0
1589
1897
  n
1590
1898
  p
1591
- 41
1899
+ 40
1592
1900
  x
1593
1901
  12
1594
1902
  @binary_size
@@ -1641,11 +1949,9 @@ x
1641
1949
  x
1642
1950
  2
1643
1951
  ==
1644
- I
1645
- 400
1646
1952
  x
1647
- 1
1648
- *
1953
+ 16
1954
+ @multibulk_limit
1649
1955
  x
1650
1956
  1
1651
1957
  >
@@ -1676,25 +1982,26 @@ s
1676
1982
  x
1677
1983
  1
1678
1984
  <
1679
- I
1680
- 200
1985
+ x
1986
+ 11
1987
+ @bulk_limit
1681
1988
  s
1682
1989
  19
1683
1990
  invalid bulk length
1684
1991
  s
1685
- 19
1686
- expected '$', got '
1992
+ 18
1993
+ expected "$", got
1687
1994
  x
1688
1995
  3
1689
1996
  chr
1690
1997
  x
1691
1998
  4
1999
+ dump
2000
+ x
2001
+ 4
1692
2002
  to_s
1693
2003
  s
1694
2004
  1
1695
- '
1696
- s
1697
- 1
1698
2005
 
1699
2006
  x
1700
2007
  5
@@ -1741,7 +2048,7 @@ p
1741
2048
  I
1742
2049
  0
1743
2050
  I
1744
- 74
2051
+ 7c
1745
2052
  I
1746
2053
  9
1747
2054
  x
@@ -1756,27 +2063,27 @@ x
1756
2063
  4
1757
2064
  each
1758
2065
  p
1759
- 101
2066
+ 107
1760
2067
  I
1761
2068
  -1
1762
2069
  I
1763
- 47
2070
+ 4c
1764
2071
  I
1765
2072
  0
1766
2073
  I
1767
- 48
2074
+ 4d
1768
2075
  I
1769
2076
  3
1770
2077
  I
1771
- 49
2078
+ 4e
1772
2079
  I
1773
2080
  7
1774
2081
  I
1775
- 4a
2082
+ 4f
1776
2083
  I
1777
2084
  11
1778
2085
  I
1779
- 4b
2086
+ 50
1780
2087
  I
1781
2088
  1b
1782
2089
  I
@@ -1784,19 +2091,19 @@ I
1784
2091
  I
1785
2092
  1c
1786
2093
  I
1787
- 4c
2094
+ 51
1788
2095
  I
1789
2096
  20
1790
2097
  I
1791
- 4d
2098
+ 52
1792
2099
  I
1793
2100
  26
1794
2101
  I
1795
- 4f
2102
+ 54
1796
2103
  I
1797
2104
  2c
1798
2105
  I
1799
- 50
2106
+ 55
1800
2107
  I
1801
2108
  36
1802
2109
  I
@@ -1804,161 +2111,173 @@ I
1804
2111
  I
1805
2112
  37
1806
2113
  I
1807
- 51
2114
+ 56
1808
2115
  I
1809
2116
  44
1810
2117
  I
1811
- 52
2118
+ 57
1812
2119
  I
1813
2120
  4f
1814
2121
  I
1815
- 53
2122
+ 58
1816
2123
  I
1817
2124
  85
1818
2125
  I
1819
- 54
2126
+ 59
1820
2127
  I
1821
2128
  90
1822
2129
  I
1823
- 55
2130
+ 5a
1824
2131
  I
1825
2132
  a1
1826
2133
  I
1827
- 56
2134
+ 5b
1828
2135
  I
1829
2136
  ac
1830
2137
  I
1831
- 57
2138
+ 5c
1832
2139
  I
1833
2140
  c0
1834
2141
  I
1835
- 58
2142
+ 5d
1836
2143
  I
1837
2144
  cb
1838
2145
  I
1839
- 59
2146
+ 5e
1840
2147
  I
1841
2148
  d0
1842
2149
  I
1843
- 5a
2150
+ 5f
1844
2151
  I
1845
2152
  e3
1846
2153
  I
1847
- 5b
2154
+ 60
1848
2155
  I
1849
2156
  ea
1850
2157
  I
1851
- 5c
2158
+ 61
1852
2159
  I
1853
- ef
2160
+ ee
1854
2161
  I
1855
- 5d
2162
+ 62
1856
2163
  I
1857
- fc
2164
+ f4
1858
2165
  I
1859
- 5e
2166
+ 63
2167
+ I
2168
+ fb
2169
+ I
2170
+ 64
1860
2171
  I
1861
2172
  100
1862
2173
  I
1863
- 5f
2174
+ 65
1864
2175
  I
1865
- 10a
2176
+ 108
1866
2177
  I
1867
- 60
2178
+ 66
1868
2179
  I
1869
- 111
2180
+ 10c
1870
2181
  I
1871
- 61
2182
+ 67
2183
+ I
2184
+ 116
2185
+ I
2186
+ 68
1872
2187
  I
1873
2188
  11d
1874
2189
  I
1875
- 62
2190
+ 69
1876
2191
  I
1877
- 123
2192
+ 129
1878
2193
  I
1879
- 60
2194
+ 6a
2195
+ I
2196
+ 12f
1880
2197
  I
1881
- 124
2198
+ 68
2199
+ I
2200
+ 130
1882
2201
  I
1883
2202
  0
1884
2203
  I
1885
- 126
2204
+ 132
1886
2205
  I
1887
- 64
2206
+ 6c
1888
2207
  I
1889
- 131
2208
+ 13d
1890
2209
  I
1891
- 65
2210
+ 6d
1892
2211
  I
1893
- 144
2212
+ 150
1894
2213
  I
1895
- 66
2214
+ 6e
1896
2215
  I
1897
- 14b
2216
+ 157
1898
2217
  I
1899
- 67
2218
+ 6f
1900
2219
  I
1901
- 14f
2220
+ 15b
1902
2221
  I
1903
- 68
2222
+ 70
1904
2223
  I
1905
- 154
2224
+ 160
1906
2225
  I
1907
- 69
2226
+ 71
1908
2227
  I
1909
- 194
2228
+ 196
1910
2229
  I
1911
- 6a
2230
+ 72
1912
2231
  I
1913
- 198
2232
+ 19a
1914
2233
  I
1915
- 6b
2234
+ 73
1916
2235
  I
1917
- 1a2
2236
+ 1a4
1918
2237
  I
1919
- 69
2238
+ 71
1920
2239
  I
1921
- 1a3
2240
+ 1a5
1922
2241
  I
1923
2242
  0
1924
2243
  I
1925
- 1a6
2244
+ 1a8
1926
2245
  I
1927
- 6e
2246
+ 76
1928
2247
  I
1929
- 1ad
2248
+ 1af
1930
2249
  I
1931
- 6f
2250
+ 77
1932
2251
  I
1933
- 1b1
2252
+ 1b3
1934
2253
  I
1935
- 70
2254
+ 78
1936
2255
  I
1937
- 1ca
2256
+ 1cd
1938
2257
  I
1939
- 6e
2258
+ 76
1940
2259
  I
1941
- 1cb
2260
+ 1ce
1942
2261
  I
1943
2262
  0
1944
2263
  I
1945
- 1cc
2264
+ 1cf
1946
2265
  I
1947
- 72
2266
+ 7a
1948
2267
  I
1949
- 1d7
2268
+ 1da
1950
2269
  I
1951
- 73
2270
+ 7b
1952
2271
  I
1953
- 1df
2272
+ 1e2
1954
2273
  I
1955
- 74
2274
+ 7c
1956
2275
  I
1957
- 1e6
2276
+ 1e9
1958
2277
  I
1959
2278
  0
1960
2279
  I
1961
- 1ec
2280
+ 1ef
1962
2281
  x
1963
2282
  52
1964
2283
  /Users/dturnbull/ruby/ruby-redis/lib/redis/reader.rb
@@ -2308,7 +2627,7 @@ p
2308
2627
  I
2309
2628
  0
2310
2629
  I
2311
- 85
2630
+ 8d
2312
2631
  I
2313
2632
  14
2314
2633
  x
@@ -2357,23 +2676,23 @@ p
2357
2676
  I
2358
2677
  -1
2359
2678
  I
2360
- 7b
2679
+ 83
2361
2680
  I
2362
2681
  0
2363
2682
  I
2364
- 7c
2683
+ 84
2365
2684
  I
2366
2685
  4
2367
2686
  I
2368
- 7d
2687
+ 85
2369
2688
  I
2370
2689
  13
2371
2690
  I
2372
- 7e
2691
+ 86
2373
2692
  I
2374
2693
  28
2375
2694
  I
2376
- 7f
2695
+ 87
2377
2696
  I
2378
2697
  38
2379
2698
  I
@@ -2381,11 +2700,11 @@ I
2381
2700
  I
2382
2701
  39
2383
2702
  I
2384
- 80
2703
+ 88
2385
2704
  I
2386
2705
  3e
2387
2706
  I
2388
- 7d
2707
+ 85
2389
2708
  I
2390
2709
  3f
2391
2710
  I
@@ -2393,11 +2712,11 @@ I
2393
2712
  I
2394
2713
  40
2395
2714
  I
2396
- 82
2715
+ 8a
2397
2716
  I
2398
2717
  45
2399
2718
  I
2400
- 7c
2719
+ 84
2401
2720
  I
2402
2721
  46
2403
2722
  I
@@ -2405,15 +2724,15 @@ I
2405
2724
  I
2406
2725
  47
2407
2726
  I
2408
- 84
2727
+ 8c
2409
2728
  I
2410
2729
  4e
2411
2730
  I
2412
- 85
2731
+ 8d
2413
2732
  I
2414
2733
  59
2415
2734
  I
2416
- 86
2735
+ 8e
2417
2736
  I
2418
2737
  67
2419
2738
  I
@@ -2421,35 +2740,35 @@ I
2421
2740
  I
2422
2741
  68
2423
2742
  I
2424
- 87
2743
+ 8f
2425
2744
  I
2426
2745
  6e
2427
2746
  I
2428
- 88
2747
+ 90
2429
2748
  I
2430
2749
  72
2431
2750
  I
2432
- 89
2751
+ 91
2433
2752
  I
2434
2753
  7b
2435
2754
  I
2436
- 8a
2755
+ 92
2437
2756
  I
2438
2757
  82
2439
2758
  I
2440
- 8b
2759
+ 93
2441
2760
  I
2442
2761
  8b
2443
2762
  I
2444
- 8c
2763
+ 94
2445
2764
  I
2446
2765
  a8
2447
2766
  I
2448
- 8d
2767
+ 95
2449
2768
  I
2450
2769
  c0
2451
2770
  I
2452
- 8a
2771
+ 92
2453
2772
  I
2454
2773
  c1
2455
2774
  I
@@ -2457,7 +2776,7 @@ I
2457
2776
  I
2458
2777
  c2
2459
2778
  I
2460
- 91
2779
+ 99
2461
2780
  I
2462
2781
  cc
2463
2782
  I
@@ -2465,15 +2784,15 @@ I
2465
2784
  I
2466
2785
  cd
2467
2786
  I
2468
- 92
2787
+ 9a
2469
2788
  I
2470
2789
  d5
2471
2790
  I
2472
- 93
2791
+ 9b
2473
2792
  I
2474
2793
  d9
2475
2794
  I
2476
- 94
2795
+ 9c
2477
2796
  I
2478
2797
  dc
2479
2798
  x
@@ -2631,19 +2950,19 @@ p
2631
2950
  I
2632
2951
  -1
2633
2952
  I
2634
- 98
2953
+ a0
2635
2954
  I
2636
2955
  0
2637
2956
  I
2638
- 99
2957
+ a1
2639
2958
  I
2640
2959
  7
2641
2960
  I
2642
- 9a
2961
+ a2
2643
2962
  I
2644
2963
  14
2645
2964
  I
2646
- 9b
2965
+ a3
2647
2966
  I
2648
2967
  17
2649
2968
  I
@@ -2651,15 +2970,15 @@ I
2651
2970
  I
2652
2971
  18
2653
2972
  I
2654
- 9d
2973
+ a5
2655
2974
  I
2656
2975
  22
2657
2976
  I
2658
- 9e
2977
+ a6
2659
2978
  I
2660
2979
  31
2661
2980
  I
2662
- a0
2981
+ a8
2663
2982
  I
2664
2983
  34
2665
2984
  I
@@ -2667,7 +2986,7 @@ I
2667
2986
  I
2668
2987
  35
2669
2988
  I
2670
- a2
2989
+ aa
2671
2990
  I
2672
2991
  45
2673
2992
  I
@@ -2675,7 +2994,7 @@ I
2675
2994
  I
2676
2995
  46
2677
2996
  I
2678
- a3
2997
+ ab
2679
2998
  I
2680
2999
  49
2681
3000
  x
@@ -2691,39 +3010,39 @@ p
2691
3010
  I
2692
3011
  2
2693
3012
  I
2694
- e
3013
+ 8
2695
3014
  I
2696
3015
  10
2697
3016
  I
2698
- 13
3017
+ 10
2699
3018
  I
2700
3019
  1e
2701
3020
  I
2702
- 1b
3021
+ 1a
2703
3022
  I
2704
3023
  2c
2705
3024
  I
2706
- 34
3025
+ 39
2707
3026
  I
2708
3027
  30
2709
3028
  I
2710
- 36
3029
+ 3b
2711
3030
  I
2712
3031
  3e
2713
3032
  I
2714
- 41
3033
+ 46
2715
3034
  I
2716
3035
  4c
2717
3036
  I
2718
- 47
3037
+ 4c
2719
3038
  I
2720
3039
  5a
2721
3040
  I
2722
- 7b
3041
+ 83
2723
3042
  I
2724
3043
  68
2725
3044
  I
2726
- 98
3045
+ a0
2727
3046
  I
2728
3047
  76
2729
3048
  x
@@ -2739,7 +3058,7 @@ p
2739
3058
  I
2740
3059
  2
2741
3060
  I
2742
- 6
3061
+ 2
2743
3062
  I
2744
3063
  1f
2745
3064
  x
@@ -2751,17 +3070,13 @@ x
2751
3070
  13
2752
3071
  attach_method
2753
3072
  p
2754
- 5
3073
+ 3
2755
3074
  I
2756
3075
  0
2757
3076
  I
2758
3077
  1
2759
3078
  I
2760
- 19
2761
- I
2762
- 3
2763
- I
2764
- 36
3079
+ 1c
2765
3080
  x
2766
3081
  52
2767
3082
  /Users/dturnbull/ruby/ruby-redis/lib/redis/reader.rb