@@ -4,16 +4,17 @@ use core::ops::Range;
44use std:: { marker:: PhantomData , str:: FromStr , sync:: Arc , u32} ;
55
66use slog:: { Drain , Logger } ;
7+
78use tikv_client_common:: Error ;
89use tikv_client_proto:: metapb;
910
1011use crate :: {
12+ Backoff ,
1113 backoff:: DEFAULT_REGION_BACKOFF ,
14+ BoundRange ,
15+ ColumnFamily ,
1216 config:: Config ,
13- pd:: { PdClient , PdRpcClient } ,
14- raw:: lowering:: * ,
15- request:: { request_codec:: RequestCodec , Collect , CollectSingle , Plan } ,
16- Backoff , BoundRange , ColumnFamily , Key , KvPair , Result , Value ,
17+ Key , KvPair , pd:: { PdClient , PdRpcClient } , raw:: lowering:: * , request:: { Collect , CollectSingle , Plan , request_codec:: RequestCodec } , Result , Value ,
1718} ;
1819
1920const MAX_RAW_KV_SCAN_LIMIT : u32 = 10240 ;
@@ -53,9 +54,10 @@ impl<C: RequestCodec> Client<C, PdRpcClient<C>> {
5354 /// ```
5455 pub async fn new < S : Into < String > > (
5556 pd_endpoints : Vec < S > ,
57+ codec : C ,
5658 logger : Option < Logger > ,
5759 ) -> Result < Self > {
58- Self :: new_with_config ( pd_endpoints, Config :: default ( ) , logger) . await
60+ Self :: new_with_config ( pd_endpoints, Config :: default ( ) , codec , logger) . await
5961 }
6062
6163 /// Create a raw [`Client`] with a custom configuration, and connect to the TiKV cluster.
@@ -83,6 +85,7 @@ impl<C: RequestCodec> Client<C, PdRpcClient<C>> {
8385 pub async fn new_with_config < S : Into < String > > (
8486 pd_endpoints : Vec < S > ,
8587 config : Config ,
88+ codec : C ,
8689 optional_logger : Option < Logger > ,
8790 ) -> Result < Self > {
8891 let logger = optional_logger. unwrap_or_else ( || {
@@ -98,7 +101,7 @@ impl<C: RequestCodec> Client<C, PdRpcClient<C>> {
98101 debug ! ( logger, "creating new raw client" ) ;
99102 let pd_endpoints: Vec < String > = pd_endpoints. into_iter ( ) . map ( Into :: into) . collect ( ) ;
100103 let rpc =
101- Arc :: new ( PdRpcClient :: connect ( & pd_endpoints, config, false , logger. clone ( ) ) . await ?) ;
104+ Arc :: new ( PdRpcClient :: connect ( & pd_endpoints, config, codec , logger. clone ( ) ) . await ?) ;
102105 Ok ( Client {
103106 rpc,
104107 cf : None ,
@@ -212,7 +215,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
212215 /// ```
213216 pub async fn batch_get (
214217 & self ,
215- keys : impl IntoIterator < Item = impl Into < Key > > ,
218+ keys : impl IntoIterator < Item = impl Into < Key > > ,
216219 ) -> Result < Vec < KvPair > > {
217220 debug ! ( self . logger, "invoking raw batch_get request" ) ;
218221 let request =
@@ -274,7 +277,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
274277 /// ```
275278 pub async fn batch_put (
276279 & self ,
277- pairs : impl IntoIterator < Item = impl Into < KvPair > > ,
280+ pairs : impl IntoIterator < Item = impl Into < KvPair > > ,
278281 ) -> Result < ( ) > {
279282 debug ! ( self . logger, "invoking raw batch_put request" ) ;
280283 let request = new_raw_batch_put_request :: < C > (
@@ -336,7 +339,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
336339 /// let result: () = req.await.unwrap();
337340 /// # });
338341 /// ```
339- pub async fn batch_delete ( & self , keys : impl IntoIterator < Item = impl Into < Key > > ) -> Result < ( ) > {
342+ pub async fn batch_delete ( & self , keys : impl IntoIterator < Item = impl Into < Key > > ) -> Result < ( ) > {
340343 debug ! ( self . logger, "invoking raw batch_delete request" ) ;
341344 self . assert_non_atomic ( ) ?;
342345 let request =
@@ -462,7 +465,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
462465 /// ```
463466 pub async fn batch_scan (
464467 & self ,
465- ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
468+ ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
466469 each_limit : u32 ,
467470 ) -> Result < Vec < KvPair > > {
468471 debug ! ( self . logger, "invoking raw batch_scan request" ) ;
@@ -494,7 +497,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
494497 /// ```
495498 pub async fn batch_scan_keys (
496499 & self ,
497- ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
500+ ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
498501 each_limit : u32 ,
499502 ) -> Result < Vec < Key > > {
500503 debug ! ( self . logger, "invoking raw batch_scan_keys request" ) ;
@@ -544,7 +547,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
544547 & self ,
545548 copr_name : impl Into < String > ,
546549 copr_version_req : impl Into < String > ,
547- ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
550+ ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
548551 request_builder : impl Fn ( metapb:: Region , Vec < Range < Key > > ) -> Vec < u8 > + Send + Sync + ' static ,
549552 ) -> Result < Vec < ( Vec < u8 > , Vec < Range < Key > > ) > > {
550553 let copr_version_req = copr_version_req. into ( ) ;
@@ -590,7 +593,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
590593
591594 async fn batch_scan_inner (
592595 & self ,
593- ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
596+ ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
594597 each_limit : u32 ,
595598 key_only : bool ,
596599 ) -> Result < Vec < KvPair > > {
@@ -625,13 +628,16 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
625628
626629#[ cfg( test) ]
627630mod tests {
628- use super :: * ;
631+ use std:: { any:: Any , sync:: Arc } ;
632+
633+ use tikv_client_proto:: kvrpcpb;
634+
629635 use crate :: {
630636 mock:: { MockKvClient , MockPdClient } ,
631637 Result ,
632638 } ;
633- use std :: { any :: Any , sync :: Arc } ;
634- use tikv_client_proto :: kvrpcpb ;
639+
640+ use super :: * ;
635641
636642 #[ tokio:: test]
637643 async fn test_raw_coprocessor ( ) -> Result < ( ) > {
@@ -687,13 +693,13 @@ mod tests {
687693 "2:[Key(0A)..Key(0F), Key(14)..Key(FAFA)]" . to_string( ) ,
688694 vec![
689695 Key :: from( vec![ 10 ] ) ..Key :: from( vec![ 15 ] ) ,
690- Key :: from( vec![ 20 ] ) ..Key :: from( vec![ 250 , 250 ] )
696+ Key :: from( vec![ 20 ] ) ..Key :: from( vec![ 250 , 250 ] ) ,
691697 ]
692698 ) ,
693699 (
694700 "3:[Key(FAFA)..Key()]" . to_string( ) ,
695701 vec![ Key :: from( vec![ 250 , 250 ] ) ..Key :: from( vec![ ] ) ]
696- )
702+ ) ,
697703 ]
698704 ) ;
699705 Ok ( ( ) )
0 commit comments