Skip to content

Commit 2d9b0af

Browse files
author
xuhui-lu
committed
Separate the sync client in a single file
Signed-off-by: xuhui-lu <[email protected]>
1 parent cfee0d9 commit 2d9b0af

File tree

4 files changed

+320
-180
lines changed

4 files changed

+320
-180
lines changed

src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ pub use crate::backoff::Backoff;
122122
#[doc(inline)]
123123
pub use crate::kv::{BoundRange, IntoOwnedRange, Key, KvPair, Value};
124124
#[doc(inline)]
125-
pub use crate::raw::{lowering as raw_lowering, Client as RawClient, SyncClient, ColumnFamily};
125+
pub use crate::raw::{lowering as raw_lowering, Client as RawClient, SyncClient as SyncRawClient, ColumnFamily};
126126
#[doc(inline)]
127127
pub use crate::request::RetryOptions;
128128
#[doc(inline)]

src/raw/client.rs

-179
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ use crate::{
1010
request::{Collect, Plan},
1111
BoundRange, ColumnFamily, Key, KvPair, Result, Value,
1212
};
13-
use futures::executor::block_on;
1413
use log::debug;
1514
use std::{sync::Arc, u32};
1615

@@ -160,10 +159,6 @@ impl Client {
160159
plan.execute().await
161160
}
162161

163-
pub fn get_sync(&self, key: impl Into<Key>) -> Result<Option<Value>> {
164-
block_on(self.get(key))
165-
}
166-
167162
/// Create a new 'batch get' request.
168163
///
169164
/// Once resolved this request will result in the fetching of the values associated with the
@@ -198,13 +193,6 @@ impl Client {
198193
.map(|r| r.into_iter().map(Into::into).collect())
199194
}
200195

201-
pub fn batch_get_sync(
202-
&self,
203-
keys: impl IntoIterator<Item = impl Into<Key>>,
204-
) -> Result<Vec<KvPair>> {
205-
block_on(self.batch_get(keys))
206-
}
207-
208196
/// Create a new 'put' request.
209197
///
210198
/// Once resolved this request will result in the setting of the value associated with the given key.
@@ -234,10 +222,6 @@ impl Client {
234222
Ok(())
235223
}
236224

237-
pub fn put_sync(&self, key: impl Into<Key>, value: impl Into<Value>) -> Result<()> {
238-
block_on(self.put(key, value))
239-
}
240-
241225
/// Create a new 'batch put' request.
242226
///
243227
/// Once resolved this request will result in the setting of the values associated with the given keys.
@@ -274,10 +258,6 @@ impl Client {
274258
Ok(())
275259
}
276260

277-
pub fn batch_put_sync(&self, pairs: impl IntoIterator<Item = impl Into<KvPair>>) -> Result<()> {
278-
block_on(self.batch_put(pairs))
279-
}
280-
281261
/// Create a new 'delete' request.
282262
///
283263
/// Once resolved this request will result in the deletion of the given key.
@@ -308,10 +288,6 @@ impl Client {
308288
Ok(())
309289
}
310290

311-
pub fn delete_sync(&self, key: impl Into<Key>) -> Result<()> {
312-
block_on(self.delete(key))
313-
}
314-
315291
/// Create a new 'batch delete' request.
316292
///
317293
/// Once resolved this request will result in the deletion of the given keys.
@@ -343,10 +319,6 @@ impl Client {
343319
Ok(())
344320
}
345321

346-
pub fn batch_delete_sync(&self, keys: impl IntoIterator<Item = impl Into<Key>>) -> Result<()> {
347-
block_on(self.batch_delete(keys))
348-
}
349-
350322
/// Create a new 'delete range' request.
351323
///
352324
/// Once resolved this request will result in the deletion of all keys lying in the given range.
@@ -375,10 +347,6 @@ impl Client {
375347
Ok(())
376348
}
377349

378-
pub fn delete_range_sync(&self, range: impl Into<BoundRange>) -> Result<()> {
379-
block_on(self.delete_range(range))
380-
}
381-
382350
/// Create a new 'scan' request.
383351
///
384352
/// Once resolved this request will result in a `Vec` of key-value pairs that lies in the specified range.
@@ -403,10 +371,6 @@ impl Client {
403371
self.scan_inner(range.into(), limit, false).await
404372
}
405373

406-
pub fn scan_sync(&self, range: impl Into<BoundRange>, limit: u32) -> Result<Vec<KvPair>> {
407-
block_on(self.scan(range, limit))
408-
}
409-
410374
/// Create a new 'scan' request that only returns the keys.
411375
///
412376
/// Once resolved this request will result in a `Vec` of keys that lies in the specified range.
@@ -436,10 +400,6 @@ impl Client {
436400
.collect())
437401
}
438402

439-
pub fn scan_keys_sync(&self, range: impl Into<BoundRange>, limit: u32) -> Result<Vec<Key>> {
440-
block_on(self.scan_keys(range, limit))
441-
}
442-
443403
/// Create a new 'batch scan' request.
444404
///
445405
/// Once resolved this request will result in a set of scanners over the given keys.
@@ -472,14 +432,6 @@ impl Client {
472432
self.batch_scan_inner(ranges, each_limit, false).await
473433
}
474434

475-
pub fn batch_scan_sync(
476-
&self,
477-
ranges: impl IntoIterator<Item = impl Into<BoundRange>>,
478-
each_limit: u32,
479-
) -> Result<Vec<KvPair>> {
480-
block_on(self.batch_scan(ranges, each_limit))
481-
}
482-
483435
/// Create a new 'batch scan' request that only returns the keys.
484436
///
485437
/// Once resolved this request will result in a set of scanners over the given keys.
@@ -516,14 +468,6 @@ impl Client {
516468
.collect())
517469
}
518470

519-
pub fn batch_scan_keys_sync(
520-
&self,
521-
ranges: impl IntoIterator<Item = impl Into<BoundRange>>,
522-
each_limit: u32,
523-
) -> Result<Vec<Key>> {
524-
block_on(self.batch_scan_keys(ranges, each_limit))
525-
}
526-
527471
/// Create a new *atomic* 'compare and set' request.
528472
///
529473
/// Once resolved this request will result in an atomic `compare and set'
@@ -558,15 +502,6 @@ impl Client {
558502
plan.execute().await
559503
}
560504

561-
pub async fn compare_and_swap_sync(
562-
&self,
563-
key: impl Into<Key>,
564-
previous_value: impl Into<Option<Value>>,
565-
new_value: impl Into<Value>,
566-
) -> Result<(Option<Value>, bool)> {
567-
block_on(self.compare_and_swap(key, previous_value, new_value))
568-
}
569-
570505
async fn scan_inner(
571506
&self,
572507
range: impl Into<BoundRange>,
@@ -628,117 +563,3 @@ impl Client {
628563
self.atomic.then(|| ()).ok_or(Error::UnsupportedMode)
629564
}
630565
}
631-
632-
#[derive(Clone)]
633-
pub struct SyncClient {
634-
client: Client,
635-
}
636-
637-
impl SyncClient {
638-
/// The Sync version of Client
639-
///
640-
/// # Examples
641-
///
642-
/// ```rust,no_run
643-
/// # use tikv_client::SyncClient;
644-
/// let client = SyncClient::new(vec!["192.168.0.100"]).await.unwrap();
645-
/// ```
646-
pub async fn new<S: Into<String>>(pd_endpoints: Vec<S>) -> Result<Client> {
647-
Self::new_with_config(pd_endpoints, Config::default()).await
648-
}
649-
650-
pub async fn new_with_config<S: Into<String>>(
651-
pd_endpoints: Vec<S>,
652-
config: Config,
653-
) -> Result<Client> {
654-
let client = Client::new_with_config(pd_endpoints, config)
655-
Ok(SyncClient {
656-
client: client
657-
})
658-
}
659-
660-
pub fn with_cf(&self, cf: ColumnFamily) -> SyncClient {
661-
SyncClient {
662-
client: self.clietn.with_cf(cf),
663-
}
664-
}
665-
666-
pub fn with_atomic_for_cas(&self) -> SyncClient {
667-
SyncClient {
668-
client: self.client.with_atomic_for_cas()
669-
}
670-
}
671-
672-
pub fn get(&self, key: impl Into<Key>) -> Result<Option<Value>> {
673-
block_on(self.client.get(key))
674-
}
675-
676-
pub fn batch_get(
677-
&self,
678-
keys: impl IntoIterator<Item = impl Into<Key>>,
679-
) -> Result<Vec<KvPair>> {
680-
block_on(self.client.batch_get(keys))
681-
}
682-
683-
pub fn put(&self, key: impl Into<Key>, value: impl Into<Value>) -> Result<()> {
684-
block_on(self.client.put(key, value))
685-
}
686-
687-
pub fn batch_put(&self, pairs: impl IntoIterator<Item = impl Into<KvPair>>) -> Result<()> {
688-
block_on(self.client.batch_put(pairs))
689-
}
690-
691-
pub fn delete(&self, key: impl Into<Key>) -> Result<()> {
692-
block_on(self.client.delete(key))
693-
}
694-
695-
pub fn batch_delete(&self, keys: impl IntoIterator<Item = impl Into<Key>>) -> Result<()> {
696-
block_on(self.client.batch_delete(keys))
697-
}
698-
699-
pub fn delete_range(&self, range: impl Into<BoundRange>) -> Result<()> {
700-
block_on(self.client.delete_range(range))
701-
}
702-
703-
pub fn scan(&self, range: impl Into<BoundRange>, limit: u32) -> Result<Vec<KvPair>> {
704-
block_on(self.client.scan(range, limit))
705-
}
706-
707-
pub fn scan_keys(&self, range: impl Into<BoundRange>, limit: u32) -> Result<Vec<Key>> {
708-
block_on(self.client.scan_keys(range, limit))
709-
}
710-
711-
pub fn batch_scan(
712-
&self,
713-
ranges: impl IntoIterator<Item = impl Into<BoundRange>>,
714-
each_limit: u32,
715-
) -> Result<Vec<KvPair>> {
716-
block_on(self.client.batch_scan(ranges, each_limit))
717-
}
718-
719-
pub fn batch_scan_keys(
720-
&self,
721-
ranges: impl IntoIterator<Item = impl Into<BoundRange>>,
722-
each_limit: u32,
723-
) -> Result<Vec<Key>> {
724-
block_on(self.client.batch_scan_keys(ranges, each_limit))
725-
}
726-
727-
pub fn compare_and_swap(
728-
&self,
729-
key: impl Into<Key>,
730-
previous_value: impl Into<Option<Value>>,
731-
new_value: impl Into<Value>,
732-
) -> Result<(Option<Value>, bool)> {
733-
block_on(self.client.compare_and_swap(key, previous_value, new_value))
734-
}
735-
736-
737-
fn assert_non_atomic(&self) -> Result<()> {
738-
(!self.atomic).then(|| ()).ok_or(Error::UnsupportedMode)
739-
}
740-
741-
fn assert_atomic(&self) -> Result<()> {
742-
self.atomic.then(|| ()).ok_or(Error::UnsupportedMode)
743-
}
744-
}

src/raw/mod.rs

+2
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
//! **Warning:** It is not advisable to use both raw and transactional functionality in the same keyspace.
1111
1212
pub use self::client::Client;
13+
pub use self::sync_client::SyncClient;
1314
use crate::Error;
1415
use std::{convert::TryFrom, fmt};
1516

1617
mod client;
18+
mod sync_client;
1719
pub mod lowering;
1820
mod requests;
1921

0 commit comments

Comments
 (0)