1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
use crate::proto::etcdserverpb;
use crate::KeyValue;
use crate::ResponseHeader;
pbwrap_request!(
PutRequest
);
impl PutRequest {
pub fn new<K, V>(key: K, value: V) -> Self
where
K: Into<Vec<u8>>,
V: Into<Vec<u8>>,
{
Self {
proto: etcdserverpb::PutRequest {
key: key.into(),
value: value.into(),
lease: 0,
prev_kv: false,
ignore_value: false,
ignore_lease: false,
},
}
}
pub fn set_lease(&mut self, lease: u64) {
self.proto.lease = lease as i64;
}
pub fn set_prev_kv(&mut self, prev_kv: bool) {
self.proto.prev_kv = prev_kv;
}
pub fn set_ignore_value(&mut self, ignore_value: bool) {
self.proto.ignore_value = ignore_value;
}
pub fn set_ignore_lease(&mut self, ignore_lease: bool) {
self.proto.ignore_lease = ignore_lease;
}
}
pbwrap_response!(PutResponse);
impl PutResponse {
pub fn take_header(&mut self) -> Option<ResponseHeader> {
self.proto.header.take().map(From::from)
}
pub fn take_prev_kv(&mut self) -> Option<KeyValue> {
self.proto.prev_kv.take().map(From::from)
}
}