Skip to content

Commit 3660ca1

Browse files
committed
move default impl into RequestCodecExt
Signed-off-by: iosmanthus <[email protected]>
1 parent db38d95 commit 3660ca1

File tree

2 files changed

+39
-31
lines changed

2 files changed

+39
-31
lines changed

src/request/codec.rs

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use core::intrinsics::copy;
22
use std::ops::{Deref, DerefMut};
3+
34
use tikv_client_common::Error;
45
use tikv_client_proto::{errorpb, kvrpcpb, metapb::Region};
56

@@ -23,6 +24,28 @@ pub trait RequestCodec: Sized + Clone + Sync + Send + 'static {
2324
key
2425
}
2526

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 {
2649
fn encode_primary_lock(&self, lock: Vec<u8>) -> Vec<u8> {
2750
self.encode_key(lock)
2851
}
@@ -54,8 +77,14 @@ pub trait RequestCodec: Sized + Clone + Sync + Send + 'static {
5477
pairs
5578
}
5679

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
5988
}
6089

6190
fn decode_keys(&self, keys: &mut [Vec<u8>]) -> Result<()> {
@@ -139,28 +168,6 @@ pub trait RequestCodec: Sized + Clone + Sync + Send + 'static {
139168
self.decode_pairs(kvs)
140169
}
141170

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-
164171
fn decode_regions(&self, regions: &mut [Region]) -> Result<()> {
165172
for region in regions.iter_mut() {
166173
self.decode_region(region)?;
@@ -174,12 +181,10 @@ pub trait RequestCodec: Sized + Clone + Sync + Send + 'static {
174181
}
175182
Ok(())
176183
}
177-
178-
fn is_plain(&self) -> bool {
179-
true
180-
}
181184
}
182185

186+
impl<T: RequestCodec> RequestCodecExt for T {}
187+
183188
#[derive(Clone)]
184189
pub struct TxnApiV1;
185190

src/request/mod.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,14 @@ impl<T: PartialEq + Default> IsDefault for T {
5454
macro_rules! impl_decode_response {
5555
($($o:ident)*) => {
5656
fn decode_response(&self, codec: &C, mut resp: Self::Response) -> Result<Self::Response> {
57+
#[allow(unused_imports)]
58+
use $crate::request::{IsDefault, codec::RequestCodecExt};
59+
5760
// decode errors
5861
if resp.has_region_error() {
5962
codec.decode_region_error(resp.mut_region_error())?;
6063
}
6164

62-
#[allow(unused_imports)]
63-
use $crate::request::IsDefault;
64-
6565
$(
6666
paste::paste! {
6767
if !resp.[<get_ $o>]().is_default() {
@@ -84,6 +84,9 @@ macro_rules! impl_kv_request {
8484
type Response = $resp;
8585

8686
fn encode_request(mut self, codec: &C) -> Self {
87+
#[allow(unused_imports)]
88+
use $crate::request::codec::RequestCodecExt;
89+
8790
$(
8891
paste::paste! {
8992
*self.[<mut_ $i>]() = codec.[<encode_ $i>](self.[<take_ $i>]());

0 commit comments

Comments
 (0)