1
1
use core:: intrinsics:: copy;
2
2
use std:: ops:: { Deref , DerefMut } ;
3
+
3
4
use tikv_client_common:: Error ;
4
5
use tikv_client_proto:: { errorpb, kvrpcpb, metapb:: Region } ;
5
6
@@ -23,6 +24,28 @@ pub trait RequestCodec: Sized + Clone + Sync + Send + 'static {
23
24
key
24
25
}
25
26
27
+ fn decode_key ( & self , _key : & mut Vec < u8 > ) -> Result < ( ) > {
28
+ Ok ( ( ) )
29
+ }
30
+
31
+ fn encode_range ( & self , start : Vec < u8 > , end : Vec < u8 > ) -> ( Vec < u8 > , Vec < u8 > ) {
32
+ ( start, end)
33
+ }
34
+
35
+ fn encode_pd_query ( & self , key : Vec < u8 > ) -> Vec < u8 > {
36
+ key
37
+ }
38
+
39
+ fn decode_region ( & self , _region : & mut Region ) -> Result < ( ) > {
40
+ Ok ( ( ) )
41
+ }
42
+
43
+ fn is_plain ( & self ) -> bool {
44
+ true
45
+ }
46
+ }
47
+
48
+ pub trait RequestCodecExt : RequestCodec {
26
49
fn encode_primary_lock ( & self , lock : Vec < u8 > ) -> Vec < u8 > {
27
50
self . encode_key ( lock)
28
51
}
@@ -54,8 +77,14 @@ pub trait RequestCodec: Sized + Clone + Sync + Send + 'static {
54
77
pairs
55
78
}
56
79
57
- fn decode_key ( & self , _key : & mut Vec < u8 > ) -> Result < ( ) > {
58
- Ok ( ( ) )
80
+ fn encode_ranges ( & self , mut ranges : Vec < kvrpcpb:: KeyRange > ) -> Vec < kvrpcpb:: KeyRange > {
81
+ for range in ranges. iter_mut ( ) {
82
+ let ( start, end) = self . encode_range ( range. take_start_key ( ) , range. take_end_key ( ) ) ;
83
+ * range. mut_start_key ( ) = start;
84
+ * range. mut_end_key ( ) = end;
85
+ }
86
+
87
+ ranges
59
88
}
60
89
61
90
fn decode_keys ( & self , keys : & mut [ Vec < u8 > ] ) -> Result < ( ) > {
@@ -139,28 +168,6 @@ pub trait RequestCodec: Sized + Clone + Sync + Send + 'static {
139
168
self . decode_pairs ( kvs)
140
169
}
141
170
142
- fn encode_range ( & self , start : Vec < u8 > , end : Vec < u8 > ) -> ( Vec < u8 > , Vec < u8 > ) {
143
- ( start, end)
144
- }
145
-
146
- fn encode_ranges ( & self , mut ranges : Vec < kvrpcpb:: KeyRange > ) -> Vec < kvrpcpb:: KeyRange > {
147
- for range in ranges. iter_mut ( ) {
148
- let ( start, end) = self . encode_range ( range. take_start_key ( ) , range. take_end_key ( ) ) ;
149
- * range. mut_start_key ( ) = start;
150
- * range. mut_end_key ( ) = end;
151
- }
152
-
153
- ranges
154
- }
155
-
156
- fn encode_pd_query ( & self , key : Vec < u8 > ) -> Vec < u8 > {
157
- key
158
- }
159
-
160
- fn decode_region ( & self , _region : & mut Region ) -> Result < ( ) > {
161
- Ok ( ( ) )
162
- }
163
-
164
171
fn decode_regions ( & self , regions : & mut [ Region ] ) -> Result < ( ) > {
165
172
for region in regions. iter_mut ( ) {
166
173
self . decode_region ( region) ?;
@@ -174,12 +181,10 @@ pub trait RequestCodec: Sized + Clone + Sync + Send + 'static {
174
181
}
175
182
Ok ( ( ) )
176
183
}
177
-
178
- fn is_plain ( & self ) -> bool {
179
- true
180
- }
181
184
}
182
185
186
+ impl < T : RequestCodec > RequestCodecExt for T { }
187
+
183
188
#[ derive( Clone ) ]
184
189
pub struct TxnApiV1 ;
185
190
0 commit comments