@@ -547,9 +547,9 @@ static void writeInteger(ByteBuf target, long value) {
547
547
548
548
static class IntegerCache {
549
549
550
- static final IntegerArgument cache [] ;
550
+ static final IntegerArgument [] cache ;
551
551
552
- static final IntegerArgument negativeCache [] ;
552
+ static final IntegerArgument [] negativeCache ;
553
553
554
554
static {
555
555
int high = Integer .getInteger ("io.lettuce.core.CommandArgs.IntegerCache" , 128 );
@@ -648,8 +648,8 @@ static void writeString(ByteBuf target, char[] value) {
648
648
IntegerArgument .writeInteger (target , value .length );
649
649
target .writeBytes (CRLF );
650
650
651
- for (int i = 0 ; i < value . length ; i ++ ) {
652
- target .writeByte ((byte ) value [ i ] );
651
+ for (char c : value ) {
652
+ target .writeByte ((byte ) c );
653
653
}
654
654
target .writeBytes (CRLF );
655
655
}
@@ -681,29 +681,7 @@ static <K, V> KeyArgument<K, V> of(K key, RedisCodec<K, V> codec) {
681
681
void encode (ByteBuf target ) {
682
682
683
683
if (codec instanceof ToByteBufEncoder ) {
684
-
685
- ToByteBufEncoder <K , V > toByteBufEncoder = (ToByteBufEncoder <K , V >) codec ;
686
-
687
- if (toByteBufEncoder .isEstimateExact ()) {
688
- target .writeByte ('$' );
689
-
690
- IntegerArgument .writeInteger (target , toByteBufEncoder .estimateSize (key ));
691
- target .writeBytes (CRLF );
692
-
693
- toByteBufEncoder .encodeKey (key , target );
694
- target .writeBytes (CRLF );
695
- } else {
696
- ByteBuf temporaryBuffer = target .alloc ().buffer (toByteBufEncoder .estimateSize (key ) + 6 );
697
-
698
- try {
699
-
700
- toByteBufEncoder .encodeKey (key , temporaryBuffer );
701
- ByteBufferArgument .writeByteBuf (target , temporaryBuffer );
702
- } finally {
703
- temporaryBuffer .release ();
704
- }
705
- }
706
-
684
+ CommandArgs .encode (target , (ToByteBufEncoder <K , K >) codec , key , ToByteBufEncoder ::encodeKey );
707
685
return ;
708
686
}
709
687
@@ -737,27 +715,7 @@ static <K, V> ValueArgument<K, V> of(V val, RedisCodec<K, V> codec) {
737
715
void encode (ByteBuf target ) {
738
716
739
717
if (codec instanceof ToByteBufEncoder ) {
740
-
741
- ToByteBufEncoder <K , V > toByteBufEncoder = (ToByteBufEncoder <K , V >) codec ;
742
- if (toByteBufEncoder .isEstimateExact ()) {
743
- target .writeByte ('$' );
744
-
745
- IntegerArgument .writeInteger (target , toByteBufEncoder .estimateSize (val ));
746
- target .writeBytes (CRLF );
747
-
748
- toByteBufEncoder .encodeValue (val , target );
749
- target .writeBytes (CRLF );
750
- } else {
751
- ByteBuf temporaryBuffer = target .alloc ().buffer (toByteBufEncoder .estimateSize (val ) + 6 );
752
-
753
- try {
754
- toByteBufEncoder .encodeValue (val , temporaryBuffer );
755
- ByteBufferArgument .writeByteBuf (target , temporaryBuffer );
756
- } finally {
757
- temporaryBuffer .release ();
758
- }
759
- }
760
-
718
+ CommandArgs .encode (target , (ToByteBufEncoder <V , V >) codec , val , ToByteBufEncoder ::encodeValue );
761
719
return ;
762
720
}
763
721
@@ -771,4 +729,33 @@ public String toString() {
771
729
772
730
}
773
731
732
+ static <T > void encode (ByteBuf target , ToByteBufEncoder <T , T > encoder , T item , EncodeFunction <T > encodeFunction ) {
733
+
734
+ if (encoder .isEstimateExact ()) {
735
+
736
+ target .writeByte ('$' );
737
+ IntegerArgument .writeInteger (target , encoder .estimateSize (item ));
738
+ target .writeBytes (CRLF );
739
+
740
+ encodeFunction .encode (encoder , item , target );
741
+ target .writeBytes (CRLF );
742
+ } else {
743
+
744
+ ByteBuf temporaryBuffer = target .alloc ().buffer (encoder .estimateSize (item ) + 6 );
745
+
746
+ try {
747
+ encodeFunction .encode (encoder , item , temporaryBuffer );
748
+ ByteBufferArgument .writeByteBuf (target , temporaryBuffer );
749
+ } finally {
750
+ temporaryBuffer .release ();
751
+ }
752
+ }
753
+ }
754
+
755
+ interface EncodeFunction <T > {
756
+
757
+ void encode (ToByteBufEncoder <T , T > encoder , T item , ByteBuf target );
758
+
759
+ }
760
+
774
761
}
0 commit comments