@@ -10,7 +10,7 @@ use futures::stream::BoxStream;
10
10
use tonic:: transport:: Channel ;
11
11
12
12
use super :: RawRpcRequest ;
13
- use crate :: collect_first ;
13
+ use crate :: collect_single ;
14
14
use crate :: pd:: PdClient ;
15
15
use crate :: proto:: kvrpcpb;
16
16
use crate :: proto:: metapb;
@@ -52,7 +52,7 @@ impl KvRequest for kvrpcpb::RawGetRequest {
52
52
}
53
53
54
54
shardable_key ! ( kvrpcpb:: RawGetRequest ) ;
55
- collect_first ! ( kvrpcpb:: RawGetResponse ) ;
55
+ collect_single ! ( kvrpcpb:: RawGetResponse ) ;
56
56
57
57
impl SingleKey for kvrpcpb:: RawGetRequest {
58
58
fn key ( & self ) -> & Vec < u8 > {
@@ -101,15 +101,54 @@ impl Merge<kvrpcpb::RawBatchGetResponse> for Collect {
101
101
}
102
102
}
103
103
104
+ pub fn new_raw_get_key_ttl_request (
105
+ key : Vec < u8 > ,
106
+ cf : Option < ColumnFamily > ,
107
+ ) -> kvrpcpb:: RawGetKeyTtlRequest {
108
+ let mut req = kvrpcpb:: RawGetKeyTtlRequest :: default ( ) ;
109
+ req. key = key;
110
+ req. maybe_set_cf ( cf) ;
111
+
112
+ req
113
+ }
114
+
115
+ impl KvRequest for kvrpcpb:: RawGetKeyTtlRequest {
116
+ type Response = kvrpcpb:: RawGetKeyTtlResponse ;
117
+ }
118
+
119
+ shardable_key ! ( kvrpcpb:: RawGetKeyTtlRequest ) ;
120
+ collect_single ! ( kvrpcpb:: RawGetKeyTtlResponse ) ;
121
+
122
+ impl SingleKey for kvrpcpb:: RawGetKeyTtlRequest {
123
+ fn key ( & self ) -> & Vec < u8 > {
124
+ & self . key
125
+ }
126
+ }
127
+
128
+ impl Process < kvrpcpb:: RawGetKeyTtlResponse > for DefaultProcessor {
129
+ type Out = Option < u64 > ;
130
+
131
+ fn process ( & self , input : Result < kvrpcpb:: RawGetKeyTtlResponse > ) -> Result < Self :: Out > {
132
+ let input = input?;
133
+ Ok ( if input. not_found {
134
+ None
135
+ } else {
136
+ Some ( input. ttl )
137
+ } )
138
+ }
139
+ }
140
+
104
141
pub fn new_raw_put_request (
105
142
key : Vec < u8 > ,
106
143
value : Vec < u8 > ,
144
+ ttl : u64 ,
107
145
cf : Option < ColumnFamily > ,
108
146
atomic : bool ,
109
147
) -> kvrpcpb:: RawPutRequest {
110
148
let mut req = kvrpcpb:: RawPutRequest :: default ( ) ;
111
149
req. key = key;
112
150
req. value = value;
151
+ req. ttl = ttl;
113
152
req. maybe_set_cf ( cf) ;
114
153
req. for_cas = atomic;
115
154
@@ -121,7 +160,7 @@ impl KvRequest for kvrpcpb::RawPutRequest {
121
160
}
122
161
123
162
shardable_key ! ( kvrpcpb:: RawPutRequest ) ;
124
- collect_first ! ( kvrpcpb:: RawPutResponse ) ;
163
+ collect_single ! ( kvrpcpb:: RawPutResponse ) ;
125
164
impl SingleKey for kvrpcpb:: RawPutRequest {
126
165
fn key ( & self ) -> & Vec < u8 > {
127
166
& self . key
@@ -130,11 +169,13 @@ impl SingleKey for kvrpcpb::RawPutRequest {
130
169
131
170
pub fn new_raw_batch_put_request (
132
171
pairs : Vec < kvrpcpb:: KvPair > ,
172
+ ttls : Vec < u64 > ,
133
173
cf : Option < ColumnFamily > ,
134
174
atomic : bool ,
135
175
) -> kvrpcpb:: RawBatchPutRequest {
136
176
let mut req = kvrpcpb:: RawBatchPutRequest :: default ( ) ;
137
177
req. pairs = pairs;
178
+ req. ttls = ttls;
138
179
req. maybe_set_cf ( cf) ;
139
180
req. for_cas = atomic;
140
181
@@ -185,7 +226,7 @@ impl KvRequest for kvrpcpb::RawDeleteRequest {
185
226
}
186
227
187
228
shardable_key ! ( kvrpcpb:: RawDeleteRequest ) ;
188
- collect_first ! ( kvrpcpb:: RawDeleteResponse ) ;
229
+ collect_single ! ( kvrpcpb:: RawDeleteResponse ) ;
189
230
impl SingleKey for kvrpcpb:: RawDeleteRequest {
190
231
fn key ( & self ) -> & Vec < u8 > {
191
232
& self . key
@@ -331,7 +372,7 @@ impl KvRequest for kvrpcpb::RawCasRequest {
331
372
}
332
373
333
374
shardable_key ! ( kvrpcpb:: RawCasRequest ) ;
334
- collect_first ! ( kvrpcpb:: RawCasResponse ) ;
375
+ collect_single ! ( kvrpcpb:: RawCasResponse ) ;
335
376
impl SingleKey for kvrpcpb:: RawCasRequest {
336
377
fn key ( & self ) -> & Vec < u8 > {
337
378
& self . key
@@ -463,6 +504,7 @@ macro_rules! impl_raw_rpc_request {
463
504
464
505
impl_raw_rpc_request ! ( RawGetRequest ) ;
465
506
impl_raw_rpc_request ! ( RawBatchGetRequest ) ;
507
+ impl_raw_rpc_request ! ( RawGetKeyTtlRequest ) ;
466
508
impl_raw_rpc_request ! ( RawPutRequest ) ;
467
509
impl_raw_rpc_request ! ( RawBatchPutRequest ) ;
468
510
impl_raw_rpc_request ! ( RawDeleteRequest ) ;
@@ -474,6 +516,7 @@ impl_raw_rpc_request!(RawCasRequest);
474
516
475
517
impl HasLocks for kvrpcpb:: RawGetResponse { }
476
518
impl HasLocks for kvrpcpb:: RawBatchGetResponse { }
519
+ impl HasLocks for kvrpcpb:: RawGetKeyTtlResponse { }
477
520
impl HasLocks for kvrpcpb:: RawPutResponse { }
478
521
impl HasLocks for kvrpcpb:: RawBatchPutResponse { }
479
522
impl HasLocks for kvrpcpb:: RawDeleteResponse { }
0 commit comments