Skip to content

Commit 8e1cf38

Browse files
committed
Add watch example.
1 parent 1fcf03b commit 8e1cf38

File tree

2 files changed

+45
-3
lines changed

2 files changed

+45
-3
lines changed

examples/kv.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,14 @@ async fn main() -> Result<(), Error> {
4646
println!("put kv: {:?}", chris);
4747
println!();
4848

49-
// get bob
49+
// get kv
5050
let resp = client.get(bob.key(), None).await?;
5151
if let Some(kv) = resp.kvs().first() {
5252
println!("Get kv: {{{}: {}}}", kv.key_str()?, kv.value_str()?);
5353
println!();
5454
}
5555

56-
// get all key-value pairs
56+
// get all kv pairs
5757
println!("Get all users:");
5858
let resp = client
5959
.get("", Some(GetOptions::new().with_from_key()))
@@ -63,7 +63,7 @@ async fn main() -> Result<(), Error> {
6363
}
6464
println!();
6565

66-
// delete chris
66+
// delete kv
6767
let resp = client
6868
.delete(chris.key(), Some(DeleteOptions::new().with_prev_key()))
6969
.await?;

examples/watch.rs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
//! Watch example
2+
3+
use etcdv3::*;
4+
5+
#[tokio::main]
6+
async fn main() -> Result<(), Error> {
7+
let mut client = Client::connect(["localhost:2379"]).await?;
8+
9+
client.put("foo", "bar", None).await?;
10+
println!("put kv: {{foo: bar}}");
11+
12+
let (mut watcher, mut stream) = client.watch("foo", None).await?;
13+
println!("create watcher {}", watcher.watch_id());
14+
println!();
15+
16+
client.put("foo", "bar2", None).await?;
17+
client.delete("foo", None).await?;
18+
19+
while let Some(resp) = stream.message().await? {
20+
println!("receive watch response");
21+
22+
if resp.canceled() {
23+
println!("watch canceled!");
24+
break;
25+
}
26+
27+
for event in resp.events() {
28+
println!("event type: {:?}", event.event_type());
29+
if let Some(kv) = event.kv() {
30+
println!("kv: {{{}: {}}}", kv.key_str()?, kv.value_str()?);
31+
}
32+
33+
if EventType::Delete == event.event_type() {
34+
watcher.cancel().await?;
35+
}
36+
}
37+
38+
println!();
39+
}
40+
41+
Ok(())
42+
}

0 commit comments

Comments
 (0)