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}Sourcepub fn poll(&self, session: &Session, applied_token: &str) -> Result<StreamPage>
pub fn poll(&self, session: &Session, 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: &Session, token: &str) -> Result<Value>
pub fn unsubscribe(&self, session: &Session, 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>
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