@@ -10,7 +10,7 @@ use futures::stream::BoxStream;
1010use tonic:: transport:: Channel ;
1111
1212use super :: RawRpcRequest ;
13- use crate :: collect_first ;
13+ use crate :: collect_single ;
1414use crate :: pd:: PdClient ;
1515use crate :: proto:: kvrpcpb;
1616use crate :: proto:: metapb;
@@ -52,7 +52,7 @@ impl KvRequest for kvrpcpb::RawGetRequest {
5252}
5353
5454shardable_key ! ( kvrpcpb:: RawGetRequest ) ;
55- collect_first ! ( kvrpcpb:: RawGetResponse ) ;
55+ collect_single ! ( kvrpcpb:: RawGetResponse ) ;
5656
5757impl SingleKey for kvrpcpb:: RawGetRequest {
5858 fn key ( & self ) -> & Vec < u8 > {
@@ -101,15 +101,54 @@ impl Merge<kvrpcpb::RawBatchGetResponse> for Collect {
101101 }
102102}
103103
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+
104141pub fn new_raw_put_request (
105142 key : Vec < u8 > ,
106143 value : Vec < u8 > ,
144+ ttl : u64 ,
107145 cf : Option < ColumnFamily > ,
108146 atomic : bool ,
109147) -> kvrpcpb:: RawPutRequest {
110148 let mut req = kvrpcpb:: RawPutRequest :: default ( ) ;
111149 req. key = key;
112150 req. value = value;
151+ req. ttl = ttl;
113152 req. maybe_set_cf ( cf) ;
114153 req. for_cas = atomic;
115154
@@ -121,7 +160,7 @@ impl KvRequest for kvrpcpb::RawPutRequest {
121160}
122161
123162shardable_key ! ( kvrpcpb:: RawPutRequest ) ;
124- collect_first ! ( kvrpcpb:: RawPutResponse ) ;
163+ collect_single ! ( kvrpcpb:: RawPutResponse ) ;
125164impl SingleKey for kvrpcpb:: RawPutRequest {
126165 fn key ( & self ) -> & Vec < u8 > {
127166 & self . key
@@ -130,11 +169,13 @@ impl SingleKey for kvrpcpb::RawPutRequest {
130169
131170pub fn new_raw_batch_put_request (
132171 pairs : Vec < kvrpcpb:: KvPair > ,
172+ ttls : Vec < u64 > ,
133173 cf : Option < ColumnFamily > ,
134174 atomic : bool ,
135175) -> kvrpcpb:: RawBatchPutRequest {
136176 let mut req = kvrpcpb:: RawBatchPutRequest :: default ( ) ;
137177 req. pairs = pairs;
178+ req. ttls = ttls;
138179 req. maybe_set_cf ( cf) ;
139180 req. for_cas = atomic;
140181
@@ -185,7 +226,7 @@ impl KvRequest for kvrpcpb::RawDeleteRequest {
185226}
186227
187228shardable_key ! ( kvrpcpb:: RawDeleteRequest ) ;
188- collect_first ! ( kvrpcpb:: RawDeleteResponse ) ;
229+ collect_single ! ( kvrpcpb:: RawDeleteResponse ) ;
189230impl SingleKey for kvrpcpb:: RawDeleteRequest {
190231 fn key ( & self ) -> & Vec < u8 > {
191232 & self . key
@@ -331,7 +372,7 @@ impl KvRequest for kvrpcpb::RawCasRequest {
331372}
332373
333374shardable_key ! ( kvrpcpb:: RawCasRequest ) ;
334- collect_first ! ( kvrpcpb:: RawCasResponse ) ;
375+ collect_single ! ( kvrpcpb:: RawCasResponse ) ;
335376impl SingleKey for kvrpcpb:: RawCasRequest {
336377 fn key ( & self ) -> & Vec < u8 > {
337378 & self . key
@@ -463,6 +504,7 @@ macro_rules! impl_raw_rpc_request {
463504
464505impl_raw_rpc_request ! ( RawGetRequest ) ;
465506impl_raw_rpc_request ! ( RawBatchGetRequest ) ;
507+ impl_raw_rpc_request ! ( RawGetKeyTtlRequest ) ;
466508impl_raw_rpc_request ! ( RawPutRequest ) ;
467509impl_raw_rpc_request ! ( RawBatchPutRequest ) ;
468510impl_raw_rpc_request ! ( RawDeleteRequest ) ;
@@ -474,6 +516,7 @@ impl_raw_rpc_request!(RawCasRequest);
474516
475517impl HasLocks for kvrpcpb:: RawGetResponse { }
476518impl HasLocks for kvrpcpb:: RawBatchGetResponse { }
519+ impl HasLocks for kvrpcpb:: RawGetKeyTtlResponse { }
477520impl HasLocks for kvrpcpb:: RawPutResponse { }
478521impl HasLocks for kvrpcpb:: RawBatchPutResponse { }
479522impl HasLocks for kvrpcpb:: RawDeleteResponse { }
0 commit comments