pub struct Client { /* private fields */ }Implementations§
Source§impl Client
impl Client
Sourcepub fn new(address: SocketAddr) -> Result<Self>
pub fn new(address: SocketAddr) -> Result<Self>
Examples found in repository?
examples/local_bench.rs (line 12)
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let args: Vec<_> = std::env::args().skip(1).collect();
7 assert_eq!(
8 args.len(),
9 3,
10 "ADDRESS PREFIX COUNT on a disposable console"
11 );
12 let client = Client::new(args[0].parse()?)?;
13 let count = args[2].parse::<usize>()?;
14 assert!((1..=128).contains(&count));
15 let query = Query::all(args[1].as_bytes());
16 let session = client.subscribe(&query)?;
17 assert!(session.rows.is_empty());
18 let started = Instant::now();
19 for i in 0..count {
20 let key = format!("{}{i:04}", args[1]);
21 let read = client.read_revision(key.as_bytes())?;
22 assert!(read.value.is_none());
23 let value = json!({"client":"rust","n":i}).to_string();
24 let receipt = client.write_revision(&read.revision, Some(value.as_bytes()))?;
25 assert!(receipt.durable);
26 }
27 let write_us = started.elapsed().as_micros();
28 let started = Instant::now();
29 let page = client.page(&query, None, 128)?;
30 assert_eq!(page.rows.len(), count);
31 let page_us = started.elapsed().as_micros();
32 let started = Instant::now();
33 let delta = client.poll(&session, &session.token)?;
34 assert_eq!(delta.commits.len(), count);
35 let poll_us = started.elapsed().as_micros();
36 client.unsubscribe(&session, &delta.token)?;
37 println!(
38 "{}",
39 json!({"client":"rust","records":count,"revision_read_write_us":write_us,"page_us":page_us,"poll_us":poll_us,"correctness_verified":true})
40 );
41 Ok(())
42}Sourcepub fn call<T: DeserializeOwned>(
&self,
route: &str,
body: &impl Serialize,
) -> Result<T>
pub fn call<T: DeserializeOwned>( &self, route: &str, body: &impl Serialize, ) -> Result<T>
A transport error after sending a write leaves its outcome uncertain.
Sourcepub fn page(
&self,
query: &Query,
cursor: Option<&str>,
limit: usize,
) -> Result<Page>
pub fn page( &self, query: &Query, cursor: Option<&str>, limit: usize, ) -> Result<Page>
Examples found in repository?
examples/local_bench.rs (line 29)
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let args: Vec<_> = std::env::args().skip(1).collect();
7 assert_eq!(
8 args.len(),
9 3,
10 "ADDRESS PREFIX COUNT on a disposable console"
11 );
12 let client = Client::new(args[0].parse()?)?;
13 let count = args[2].parse::<usize>()?;
14 assert!((1..=128).contains(&count));
15 let query = Query::all(args[1].as_bytes());
16 let session = client.subscribe(&query)?;
17 assert!(session.rows.is_empty());
18 let started = Instant::now();
19 for i in 0..count {
20 let key = format!("{}{i:04}", args[1]);
21 let read = client.read_revision(key.as_bytes())?;
22 assert!(read.value.is_none());
23 let value = json!({"client":"rust","n":i}).to_string();
24 let receipt = client.write_revision(&read.revision, Some(value.as_bytes()))?;
25 assert!(receipt.durable);
26 }
27 let write_us = started.elapsed().as_micros();
28 let started = Instant::now();
29 let page = client.page(&query, None, 128)?;
30 assert_eq!(page.rows.len(), count);
31 let page_us = started.elapsed().as_micros();
32 let started = Instant::now();
33 let delta = client.poll(&session, &session.token)?;
34 assert_eq!(delta.commits.len(), count);
35 let poll_us = started.elapsed().as_micros();
36 client.unsubscribe(&session, &delta.token)?;
37 println!(
38 "{}",
39 json!({"client":"rust","records":count,"revision_read_write_us":write_us,"page_us":page_us,"poll_us":poll_us,"correctness_verified":true})
40 );
41 Ok(())
42}pub fn page_with_scan( &self, query: &Query, cursor: Option<&str>, limit: usize, force_scan: bool, ) -> Result<Page>
Sourcepub fn read_revision(&self, key: &[u8]) -> Result<RevisionRead>
pub fn read_revision(&self, key: &[u8]) -> Result<RevisionRead>
Examples found in repository?
examples/local_bench.rs (line 21)
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let args: Vec<_> = std::env::args().skip(1).collect();
7 assert_eq!(
8 args.len(),
9 3,
10 "ADDRESS PREFIX COUNT on a disposable console"
11 );
12 let client = Client::new(args[0].parse()?)?;
13 let count = args[2].parse::<usize>()?;
14 assert!((1..=128).contains(&count));
15 let query = Query::all(args[1].as_bytes());
16 let session = client.subscribe(&query)?;
17 assert!(session.rows.is_empty());
18 let started = Instant::now();
19 for i in 0..count {
20 let key = format!("{}{i:04}", args[1]);
21 let read = client.read_revision(key.as_bytes())?;
22 assert!(read.value.is_none());
23 let value = json!({"client":"rust","n":i}).to_string();
24 let receipt = client.write_revision(&read.revision, Some(value.as_bytes()))?;
25 assert!(receipt.durable);
26 }
27 let write_us = started.elapsed().as_micros();
28 let started = Instant::now();
29 let page = client.page(&query, None, 128)?;
30 assert_eq!(page.rows.len(), count);
31 let page_us = started.elapsed().as_micros();
32 let started = Instant::now();
33 let delta = client.poll(&session, &session.token)?;
34 assert_eq!(delta.commits.len(), count);
35 let poll_us = started.elapsed().as_micros();
36 client.unsubscribe(&session, &delta.token)?;
37 println!(
38 "{}",
39 json!({"client":"rust","records":count,"revision_read_write_us":write_us,"page_us":page_us,"poll_us":poll_us,"correctness_verified":true})
40 );
41 Ok(())
42}Sourcepub fn write_revision(
&self,
revision: &str,
value: Option<&[u8]>,
) -> Result<Receipt>
pub fn write_revision( &self, revision: &str, value: Option<&[u8]>, ) -> Result<Receipt>
Examples found in repository?
examples/local_bench.rs (line 24)
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let args: Vec<_> = std::env::args().skip(1).collect();
7 assert_eq!(
8 args.len(),
9 3,
10 "ADDRESS PREFIX COUNT on a disposable console"
11 );
12 let client = Client::new(args[0].parse()?)?;
13 let count = args[2].parse::<usize>()?;
14 assert!((1..=128).contains(&count));
15 let query = Query::all(args[1].as_bytes());
16 let session = client.subscribe(&query)?;
17 assert!(session.rows.is_empty());
18 let started = Instant::now();
19 for i in 0..count {
20 let key = format!("{}{i:04}", args[1]);
21 let read = client.read_revision(key.as_bytes())?;
22 assert!(read.value.is_none());
23 let value = json!({"client":"rust","n":i}).to_string();
24 let receipt = client.write_revision(&read.revision, Some(value.as_bytes()))?;
25 assert!(receipt.durable);
26 }
27 let write_us = started.elapsed().as_micros();
28 let started = Instant::now();
29 let page = client.page(&query, None, 128)?;
30 assert_eq!(page.rows.len(), count);
31 let page_us = started.elapsed().as_micros();
32 let started = Instant::now();
33 let delta = client.poll(&session, &session.token)?;
34 assert_eq!(delta.commits.len(), count);
35 let poll_us = started.elapsed().as_micros();
36 client.unsubscribe(&session, &delta.token)?;
37 println!(
38 "{}",
39 json!({"client":"rust","records":count,"revision_read_write_us":write_us,"page_us":page_us,"poll_us":poll_us,"correctness_verified":true})
40 );
41 Ok(())
42}Sourcepub fn subscribe(&self, query: &Query) -> Result<Session>
pub fn subscribe(&self, query: &Query) -> Result<Session>
Examples found in repository?
examples/local_bench.rs (line 16)
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let args: Vec<_> = std::env::args().skip(1).collect();
7 assert_eq!(
8 args.len(),
9 3,
10 "ADDRESS PREFIX COUNT on a disposable console"
11 );
12 let client = Client::new(args[0].parse()?)?;
13 let count = args[2].parse::<usize>()?;
14 assert!((1..=128).contains(&count));
15 let query = Query::all(args[1].as_bytes());
16 let session = client.subscribe(&query)?;
17 assert!(session.rows.is_empty());
18 let started = Instant::now();
19 for i in 0..count {
20 let key = format!("{}{i:04}", args[1]);
21 let read = client.read_revision(key.as_bytes())?;
22 assert!(read.value.is_none());
23 let value = json!({"client":"rust","n":i}).to_string();
24 let receipt = client.write_revision(&read.revision, Some(value.as_bytes()))?;
25 assert!(receipt.durable);
26 }
27 let write_us = started.elapsed().as_micros();
28 let started = Instant::now();
29 let page = client.page(&query, None, 128)?;
30 assert_eq!(page.rows.len(), count);
31 let page_us = started.elapsed().as_micros();
32 let started = Instant::now();
33 let delta = client.poll(&session, &session.token)?;
34 assert_eq!(delta.commits.len(), count);
35 let poll_us = started.elapsed().as_micros();
36 client.unsubscribe(&session, &delta.token)?;
37 println!(
38 "{}",
39 json!({"client":"rust","records":count,"revision_read_write_us":write_us,"page_us":page_us,"poll_us":poll_us,"correctness_verified":true})
40 );
41 Ok(())
42}pub fn resume(&self, token: &str) -> Result<ResumedSession>
Sourcepub fn poll(
&self,
session: &impl SessionIdentity,
applied_token: &str,
) -> Result<StreamPage>
pub fn poll( &self, session: &impl SessionIdentity, applied_token: &str, ) -> Result<StreamPage>
Supply the last applied token; persist rows and this token atomically in the application.
Examples found in repository?
examples/local_bench.rs (line 33)
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let args: Vec<_> = std::env::args().skip(1).collect();
7 assert_eq!(
8 args.len(),
9 3,
10 "ADDRESS PREFIX COUNT on a disposable console"
11 );
12 let client = Client::new(args[0].parse()?)?;
13 let count = args[2].parse::<usize>()?;
14 assert!((1..=128).contains(&count));
15 let query = Query::all(args[1].as_bytes());
16 let session = client.subscribe(&query)?;
17 assert!(session.rows.is_empty());
18 let started = Instant::now();
19 for i in 0..count {
20 let key = format!("{}{i:04}", args[1]);
21 let read = client.read_revision(key.as_bytes())?;
22 assert!(read.value.is_none());
23 let value = json!({"client":"rust","n":i}).to_string();
24 let receipt = client.write_revision(&read.revision, Some(value.as_bytes()))?;
25 assert!(receipt.durable);
26 }
27 let write_us = started.elapsed().as_micros();
28 let started = Instant::now();
29 let page = client.page(&query, None, 128)?;
30 assert_eq!(page.rows.len(), count);
31 let page_us = started.elapsed().as_micros();
32 let started = Instant::now();
33 let delta = client.poll(&session, &session.token)?;
34 assert_eq!(delta.commits.len(), count);
35 let poll_us = started.elapsed().as_micros();
36 client.unsubscribe(&session, &delta.token)?;
37 println!(
38 "{}",
39 json!({"client":"rust","records":count,"revision_read_write_us":write_us,"page_us":page_us,"poll_us":poll_us,"correctness_verified":true})
40 );
41 Ok(())
42}Sourcepub fn unsubscribe(
&self,
session: &impl SessionIdentity,
token: &str,
) -> Result<Value>
pub fn unsubscribe( &self, session: &impl SessionIdentity, token: &str, ) -> Result<Value>
Examples found in repository?
examples/local_bench.rs (line 36)
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let args: Vec<_> = std::env::args().skip(1).collect();
7 assert_eq!(
8 args.len(),
9 3,
10 "ADDRESS PREFIX COUNT on a disposable console"
11 );
12 let client = Client::new(args[0].parse()?)?;
13 let count = args[2].parse::<usize>()?;
14 assert!((1..=128).contains(&count));
15 let query = Query::all(args[1].as_bytes());
16 let session = client.subscribe(&query)?;
17 assert!(session.rows.is_empty());
18 let started = Instant::now();
19 for i in 0..count {
20 let key = format!("{}{i:04}", args[1]);
21 let read = client.read_revision(key.as_bytes())?;
22 assert!(read.value.is_none());
23 let value = json!({"client":"rust","n":i}).to_string();
24 let receipt = client.write_revision(&read.revision, Some(value.as_bytes()))?;
25 assert!(receipt.durable);
26 }
27 let write_us = started.elapsed().as_micros();
28 let started = Instant::now();
29 let page = client.page(&query, None, 128)?;
30 assert_eq!(page.rows.len(), count);
31 let page_us = started.elapsed().as_micros();
32 let started = Instant::now();
33 let delta = client.poll(&session, &session.token)?;
34 assert_eq!(delta.commits.len(), count);
35 let poll_us = started.elapsed().as_micros();
36 client.unsubscribe(&session, &delta.token)?;
37 println!(
38 "{}",
39 json!({"client":"rust","records":count,"revision_read_write_us":write_us,"page_us":page_us,"poll_us":poll_us,"correctness_verified":true})
40 );
41 Ok(())
42}pub fn snapshot_at(&self, position: u64) -> Result<Value>
pub fn backup(&self, directory: &str) -> Result<Value>
pub fn verify_backup(&self, directory: &str) -> Result<Value>
Sourcepub fn create_index(
&self,
name: &str,
prefix: &[u8],
path: &[&str],
) -> Result<Value>
pub fn create_index( &self, name: &str, prefix: &[u8], path: &[&str], ) -> Result<Value>
This route takes prefix bytes as a JSON array, unlike hex key_prefix fields.
pub fn indexes(&self) -> Result<Value>
pub fn search_index(&self, name: &str, value: Value) -> Result<SearchResult>
pub fn drop_index(&self, name: &str) -> Result<Value>
pub fn compaction_advice(&self, retain_commits: u64) -> Result<Value>
pub fn search(&self, query: &SearchQuery) -> Result<SearchResult>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Client
impl RefUnwindSafe for Client
impl Send for Client
impl Sync for Client
impl Unpin for Client
impl UnsafeUnpin for Client
impl UnwindSafe for Client
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more