Skip to main content

momento_protos/
cache_client.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct GetRequest {
4    #[prost(bytes = "vec", tag = "1")]
5    pub cache_key: ::prost::alloc::vec::Vec<u8>,
6}
7#[derive(Clone, PartialEq, ::prost::Message)]
8pub struct GetResponse {
9    #[prost(enumeration = "ECacheResult", tag = "1")]
10    pub result: i32,
11    #[prost(bytes = "vec", tag = "2")]
12    pub cache_body: ::prost::alloc::vec::Vec<u8>,
13    #[prost(string, tag = "3")]
14    pub message: ::prost::alloc::string::String,
15}
16#[derive(Clone, PartialEq, ::prost::Message)]
17pub struct GetWithHashRequest {
18    #[prost(bytes = "vec", tag = "1")]
19    pub cache_key: ::prost::alloc::vec::Vec<u8>,
20}
21#[derive(Clone, PartialEq, ::prost::Message)]
22pub struct GetWithHashResponse {
23    #[prost(oneof = "get_with_hash_response::Result", tags = "1, 2")]
24    pub result: ::core::option::Option<get_with_hash_response::Result>,
25}
26/// Nested message and enum types in `_GetWithHashResponse`.
27pub mod get_with_hash_response {
28    #[derive(Clone, PartialEq, ::prost::Message)]
29    pub struct Found {
30        #[prost(bytes = "vec", tag = "1")]
31        pub value: ::prost::alloc::vec::Vec<u8>,
32        #[prost(bytes = "vec", tag = "2")]
33        pub hash: ::prost::alloc::vec::Vec<u8>,
34    }
35    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
36    pub struct Missing {}
37    #[derive(Clone, PartialEq, ::prost::Oneof)]
38    pub enum Result {
39        #[prost(message, tag = "1")]
40        Found(Found),
41        #[prost(message, tag = "2")]
42        Missing(Missing),
43    }
44}
45#[derive(Clone, PartialEq, ::prost::Message)]
46pub struct GetBatchRequest {
47    #[prost(message, repeated, tag = "1")]
48    pub items: ::prost::alloc::vec::Vec<GetRequest>,
49}
50#[derive(Clone, PartialEq, ::prost::Message)]
51pub struct DeleteRequest {
52    #[prost(bytes = "vec", tag = "1")]
53    pub cache_key: ::prost::alloc::vec::Vec<u8>,
54}
55#[derive(Clone, Copy, PartialEq, ::prost::Message)]
56pub struct DeleteResponse {}
57#[derive(Clone, PartialEq, ::prost::Message)]
58pub struct SetRequest {
59    #[prost(bytes = "vec", tag = "1")]
60    pub cache_key: ::prost::alloc::vec::Vec<u8>,
61    #[prost(bytes = "vec", tag = "2")]
62    pub cache_body: ::prost::alloc::vec::Vec<u8>,
63    #[prost(uint64, tag = "3")]
64    pub ttl_milliseconds: u64,
65}
66#[derive(Clone, PartialEq, ::prost::Message)]
67pub struct SetResponse {
68    #[prost(enumeration = "ECacheResult", tag = "1")]
69    pub result: i32,
70    #[prost(string, tag = "2")]
71    pub message: ::prost::alloc::string::String,
72}
73#[derive(Clone, PartialEq, ::prost::Message)]
74pub struct SetBatchRequest {
75    #[prost(message, repeated, tag = "1")]
76    pub items: ::prost::alloc::vec::Vec<SetRequest>,
77}
78#[derive(Clone, PartialEq, ::prost::Message)]
79pub struct SetIfRequest {
80    #[prost(bytes = "vec", tag = "1")]
81    pub cache_key: ::prost::alloc::vec::Vec<u8>,
82    #[prost(bytes = "vec", tag = "2")]
83    pub cache_body: ::prost::alloc::vec::Vec<u8>,
84    #[prost(uint64, tag = "3")]
85    pub ttl_milliseconds: u64,
86    #[prost(oneof = "set_if_request::Condition", tags = "4, 5, 6, 7, 8, 9")]
87    pub condition: ::core::option::Option<set_if_request::Condition>,
88}
89/// Nested message and enum types in `_SetIfRequest`.
90pub mod set_if_request {
91    #[derive(Clone, PartialEq, ::prost::Oneof)]
92    pub enum Condition {
93        #[prost(message, tag = "4")]
94        Present(super::super::common::Present),
95        #[prost(message, tag = "5")]
96        PresentAndNotEqual(super::super::common::PresentAndNotEqual),
97        #[prost(message, tag = "6")]
98        Absent(super::super::common::Absent),
99        #[prost(message, tag = "7")]
100        Equal(super::super::common::Equal),
101        #[prost(message, tag = "8")]
102        AbsentOrEqual(super::super::common::AbsentOrEqual),
103        #[prost(message, tag = "9")]
104        NotEqual(super::super::common::NotEqual),
105    }
106}
107#[derive(Clone, Copy, PartialEq, ::prost::Message)]
108pub struct SetIfResponse {
109    #[prost(oneof = "set_if_response::Result", tags = "1, 2")]
110    pub result: ::core::option::Option<set_if_response::Result>,
111}
112/// Nested message and enum types in `_SetIfResponse`.
113pub mod set_if_response {
114    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
115    pub struct Stored {}
116    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
117    pub struct NotStored {}
118    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
119    pub enum Result {
120        #[prost(message, tag = "1")]
121        Stored(Stored),
122        #[prost(message, tag = "2")]
123        NotStored(NotStored),
124    }
125}
126#[derive(Clone, PartialEq, ::prost::Message)]
127pub struct SetIfHashRequest {
128    #[prost(bytes = "vec", tag = "1")]
129    pub cache_key: ::prost::alloc::vec::Vec<u8>,
130    #[prost(bytes = "vec", tag = "2")]
131    pub cache_body: ::prost::alloc::vec::Vec<u8>,
132    #[prost(uint64, tag = "3")]
133    pub ttl_milliseconds: u64,
134    #[prost(oneof = "set_if_hash_request::Condition", tags = "4, 5, 6, 7, 8")]
135    pub condition: ::core::option::Option<set_if_hash_request::Condition>,
136}
137/// Nested message and enum types in `_SetIfHashRequest`.
138pub mod set_if_hash_request {
139    #[derive(Clone, PartialEq, ::prost::Oneof)]
140    pub enum Condition {
141        /// Update the item only if it exists and the hash of its current value
142        /// does not match the hash passed in the request
143        #[prost(message, tag = "4")]
144        PresentAndNotHashEqual(super::super::common::PresentAndNotHashEqual),
145        /// Update the item only if it exists and the hash of its current value
146        /// matches the hash passed in the request
147        #[prost(message, tag = "5")]
148        PresentAndHashEqual(super::super::common::PresentAndHashEqual),
149        /// Update the item if it exists and the hash of its current value matches
150        /// the hash passed in the request or create it if the item doesn't exist
151        #[prost(message, tag = "6")]
152        AbsentOrHashEqual(super::super::common::AbsentOrHashEqual),
153        /// Update the item if it exists and the hash of its current value doesn't
154        /// match the hash passed in the request or create it if the item doesn't exist
155        #[prost(message, tag = "7")]
156        AbsentOrNotHashEqual(super::super::common::AbsentOrNotHashEqual),
157        /// Unconditionally update the item if it exists or create it if it doesn't
158        #[prost(message, tag = "8")]
159        Unconditional(super::super::common::Unconditional),
160    }
161}
162#[derive(Clone, PartialEq, ::prost::Message)]
163pub struct SetIfHashResponse {
164    #[prost(oneof = "set_if_hash_response::Result", tags = "1, 2")]
165    pub result: ::core::option::Option<set_if_hash_response::Result>,
166}
167/// Nested message and enum types in `_SetIfHashResponse`.
168pub mod set_if_hash_response {
169    #[derive(Clone, PartialEq, ::prost::Message)]
170    pub struct Stored {
171        /// Hash computed on the newly stored value
172        #[prost(bytes = "vec", tag = "1")]
173        pub new_hash: ::prost::alloc::vec::Vec<u8>,
174    }
175    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
176    pub struct NotStored {}
177    #[derive(Clone, PartialEq, ::prost::Oneof)]
178    pub enum Result {
179        #[prost(message, tag = "1")]
180        Stored(Stored),
181        #[prost(message, tag = "2")]
182        NotStored(NotStored),
183    }
184}
185#[derive(Clone, PartialEq, ::prost::Message)]
186pub struct SetIfNotExistsRequest {
187    #[prost(bytes = "vec", tag = "1")]
188    pub cache_key: ::prost::alloc::vec::Vec<u8>,
189    #[prost(bytes = "vec", tag = "2")]
190    pub cache_body: ::prost::alloc::vec::Vec<u8>,
191    #[prost(uint64, tag = "3")]
192    pub ttl_milliseconds: u64,
193}
194#[derive(Clone, Copy, PartialEq, ::prost::Message)]
195pub struct SetIfNotExistsResponse {
196    #[prost(oneof = "set_if_not_exists_response::Result", tags = "1, 2")]
197    pub result: ::core::option::Option<set_if_not_exists_response::Result>,
198}
199/// Nested message and enum types in `_SetIfNotExistsResponse`.
200pub mod set_if_not_exists_response {
201    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
202    pub struct Stored {}
203    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
204    pub struct NotStored {}
205    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
206    pub enum Result {
207        #[prost(message, tag = "1")]
208        Stored(Stored),
209        #[prost(message, tag = "2")]
210        NotStored(NotStored),
211    }
212}
213#[derive(Clone, PartialEq, ::prost::Message)]
214pub struct KeysExistRequest {
215    #[prost(bytes = "vec", repeated, tag = "1")]
216    pub cache_keys: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
217}
218#[derive(Clone, PartialEq, ::prost::Message)]
219pub struct KeysExistResponse {
220    #[prost(bool, repeated, tag = "1")]
221    pub exists: ::prost::alloc::vec::Vec<bool>,
222}
223#[derive(Clone, PartialEq, ::prost::Message)]
224pub struct IncrementRequest {
225    #[prost(bytes = "vec", tag = "1")]
226    pub cache_key: ::prost::alloc::vec::Vec<u8>,
227    /// Amount to add to the stored value.
228    /// If this key doesn't currently exist, it's created with this value (encoded as a base 10 string)
229    #[prost(int64, tag = "2")]
230    pub amount: i64,
231    #[prost(uint64, tag = "3")]
232    pub ttl_milliseconds: u64,
233}
234#[derive(Clone, Copy, PartialEq, ::prost::Message)]
235pub struct IncrementResponse {
236    /// The value stored after the increment operation.
237    #[prost(int64, tag = "1")]
238    pub value: i64,
239}
240#[derive(Clone, PartialEq, ::prost::Message)]
241pub struct UpdateTtlRequest {
242    #[prost(bytes = "vec", tag = "1")]
243    pub cache_key: ::prost::alloc::vec::Vec<u8>,
244    #[prost(oneof = "update_ttl_request::UpdateTtl", tags = "2, 3, 4")]
245    pub update_ttl: ::core::option::Option<update_ttl_request::UpdateTtl>,
246}
247/// Nested message and enum types in `_UpdateTtlRequest`.
248pub mod update_ttl_request {
249    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
250    pub enum UpdateTtl {
251        /// Sets the ttl to this value only if it is an increase compared to the existing ttl
252        #[prost(uint64, tag = "2")]
253        IncreaseToMilliseconds(u64),
254        /// Sets the ttl to this value only if it is a decrease compared to the existing ttl
255        #[prost(uint64, tag = "3")]
256        DecreaseToMilliseconds(u64),
257        /// Sets the ttl to this value unconditionally
258        #[prost(uint64, tag = "4")]
259        OverwriteToMilliseconds(u64),
260    }
261}
262#[derive(Clone, Copy, PartialEq, ::prost::Message)]
263pub struct UpdateTtlResponse {
264    #[prost(oneof = "update_ttl_response::Result", tags = "1, 2, 3")]
265    pub result: ::core::option::Option<update_ttl_response::Result>,
266}
267/// Nested message and enum types in `_UpdateTtlResponse`.
268pub mod update_ttl_response {
269    /// Indicates that the ttl was applied.
270    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
271    pub struct Set {}
272    /// Indicates that the ttl was not applied due to a failed condition.
273    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
274    pub struct NotSet {}
275    /// Indicates that the key did not exist.
276    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
277    pub struct Missing {}
278    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
279    pub enum Result {
280        #[prost(message, tag = "1")]
281        Set(Set),
282        #[prost(message, tag = "2")]
283        NotSet(NotSet),
284        #[prost(message, tag = "3")]
285        Missing(Missing),
286    }
287}
288#[derive(Clone, PartialEq, ::prost::Message)]
289pub struct ItemGetTtlRequest {
290    #[prost(bytes = "vec", tag = "1")]
291    pub cache_key: ::prost::alloc::vec::Vec<u8>,
292}
293#[derive(Clone, Copy, PartialEq, ::prost::Message)]
294pub struct ItemGetTtlResponse {
295    #[prost(oneof = "item_get_ttl_response::Result", tags = "1, 2")]
296    pub result: ::core::option::Option<item_get_ttl_response::Result>,
297}
298/// Nested message and enum types in `_ItemGetTtlResponse`.
299pub mod item_get_ttl_response {
300    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
301    pub struct Found {
302        #[prost(uint64, tag = "1")]
303        pub remaining_ttl_millis: u64,
304    }
305    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
306    pub struct Missing {}
307    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
308    pub enum Result {
309        #[prost(message, tag = "1")]
310        Found(Found),
311        #[prost(message, tag = "2")]
312        Missing(Missing),
313    }
314}
315#[derive(Clone, PartialEq, ::prost::Message)]
316pub struct ItemGetTypeRequest {
317    #[prost(bytes = "vec", tag = "1")]
318    pub cache_key: ::prost::alloc::vec::Vec<u8>,
319}
320#[derive(Clone, Copy, PartialEq, ::prost::Message)]
321pub struct ItemGetTypeResponse {
322    #[prost(oneof = "item_get_type_response::Result", tags = "1, 2")]
323    pub result: ::core::option::Option<item_get_type_response::Result>,
324}
325/// Nested message and enum types in `_ItemGetTypeResponse`.
326pub mod item_get_type_response {
327    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
328    pub struct Found {
329        #[prost(enumeration = "ItemType", tag = "1")]
330        pub item_type: i32,
331    }
332    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
333    pub struct Missing {}
334    #[derive(
335        Clone,
336        Copy,
337        Debug,
338        PartialEq,
339        Eq,
340        Hash,
341        PartialOrd,
342        Ord,
343        ::prost::Enumeration
344    )]
345    #[repr(i32)]
346    pub enum ItemType {
347        Scalar = 0,
348        Dictionary = 1,
349        Set = 2,
350        List = 3,
351        SortedSet = 4,
352    }
353    impl ItemType {
354        /// String value of the enum field names used in the ProtoBuf definition.
355        ///
356        /// The values are not transformed in any way and thus are considered stable
357        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
358        pub fn as_str_name(&self) -> &'static str {
359            match self {
360                Self::Scalar => "SCALAR",
361                Self::Dictionary => "DICTIONARY",
362                Self::Set => "SET",
363                Self::List => "LIST",
364                Self::SortedSet => "SORTED_SET",
365            }
366        }
367        /// Creates an enum from field names used in the ProtoBuf definition.
368        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
369            match value {
370                "SCALAR" => Some(Self::Scalar),
371                "DICTIONARY" => Some(Self::Dictionary),
372                "SET" => Some(Self::Set),
373                "LIST" => Some(Self::List),
374                "SORTED_SET" => Some(Self::SortedSet),
375                _ => None,
376            }
377        }
378    }
379    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
380    pub enum Result {
381        #[prost(message, tag = "1")]
382        Found(Found),
383        #[prost(message, tag = "2")]
384        Missing(Missing),
385    }
386}
387#[derive(Clone, PartialEq, ::prost::Message)]
388pub struct DictionaryGetRequest {
389    #[prost(bytes = "vec", tag = "1")]
390    pub dictionary_name: ::prost::alloc::vec::Vec<u8>,
391    #[prost(bytes = "vec", repeated, tag = "2")]
392    pub fields: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
393}
394#[derive(Clone, PartialEq, ::prost::Message)]
395pub struct DictionaryGetResponse {
396    #[prost(oneof = "dictionary_get_response::Dictionary", tags = "1, 2")]
397    pub dictionary: ::core::option::Option<dictionary_get_response::Dictionary>,
398}
399/// Nested message and enum types in `_DictionaryGetResponse`.
400pub mod dictionary_get_response {
401    #[derive(Clone, PartialEq, ::prost::Message)]
402    pub struct DictionaryGetResponsePart {
403        #[prost(enumeration = "super::ECacheResult", tag = "1")]
404        pub result: i32,
405        #[prost(bytes = "vec", tag = "2")]
406        pub cache_body: ::prost::alloc::vec::Vec<u8>,
407    }
408    #[derive(Clone, PartialEq, ::prost::Message)]
409    pub struct Found {
410        #[prost(message, repeated, tag = "1")]
411        pub items: ::prost::alloc::vec::Vec<DictionaryGetResponsePart>,
412    }
413    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
414    pub struct Missing {}
415    #[derive(Clone, PartialEq, ::prost::Oneof)]
416    pub enum Dictionary {
417        #[prost(message, tag = "1")]
418        Found(Found),
419        #[prost(message, tag = "2")]
420        Missing(Missing),
421    }
422}
423#[derive(Clone, PartialEq, ::prost::Message)]
424pub struct DictionaryFetchRequest {
425    #[prost(bytes = "vec", tag = "1")]
426    pub dictionary_name: ::prost::alloc::vec::Vec<u8>,
427}
428#[derive(Clone, PartialEq, ::prost::Message)]
429pub struct DictionaryFieldValuePair {
430    #[prost(bytes = "vec", tag = "1")]
431    pub field: ::prost::alloc::vec::Vec<u8>,
432    #[prost(bytes = "vec", tag = "2")]
433    pub value: ::prost::alloc::vec::Vec<u8>,
434}
435#[derive(Clone, PartialEq, ::prost::Message)]
436pub struct DictionaryFetchResponse {
437    #[prost(oneof = "dictionary_fetch_response::Dictionary", tags = "1, 2")]
438    pub dictionary: ::core::option::Option<dictionary_fetch_response::Dictionary>,
439}
440/// Nested message and enum types in `_DictionaryFetchResponse`.
441pub mod dictionary_fetch_response {
442    #[derive(Clone, PartialEq, ::prost::Message)]
443    pub struct Found {
444        #[prost(message, repeated, tag = "1")]
445        pub items: ::prost::alloc::vec::Vec<super::DictionaryFieldValuePair>,
446    }
447    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
448    pub struct Missing {}
449    #[derive(Clone, PartialEq, ::prost::Oneof)]
450    pub enum Dictionary {
451        #[prost(message, tag = "1")]
452        Found(Found),
453        #[prost(message, tag = "2")]
454        Missing(Missing),
455    }
456}
457#[derive(Clone, PartialEq, ::prost::Message)]
458pub struct DictionarySetRequest {
459    #[prost(bytes = "vec", tag = "1")]
460    pub dictionary_name: ::prost::alloc::vec::Vec<u8>,
461    #[prost(message, repeated, tag = "2")]
462    pub items: ::prost::alloc::vec::Vec<DictionaryFieldValuePair>,
463    #[prost(uint64, tag = "3")]
464    pub ttl_milliseconds: u64,
465    #[prost(bool, tag = "4")]
466    pub refresh_ttl: bool,
467}
468#[derive(Clone, Copy, PartialEq, ::prost::Message)]
469pub struct DictionarySetResponse {}
470#[derive(Clone, PartialEq, ::prost::Message)]
471pub struct DictionaryIncrementRequest {
472    #[prost(bytes = "vec", tag = "1")]
473    pub dictionary_name: ::prost::alloc::vec::Vec<u8>,
474    #[prost(bytes = "vec", tag = "2")]
475    pub field: ::prost::alloc::vec::Vec<u8>,
476    #[prost(int64, tag = "3")]
477    pub amount: i64,
478    #[prost(uint64, tag = "4")]
479    pub ttl_milliseconds: u64,
480    #[prost(bool, tag = "5")]
481    pub refresh_ttl: bool,
482}
483#[derive(Clone, Copy, PartialEq, ::prost::Message)]
484pub struct DictionaryIncrementResponse {
485    #[prost(int64, tag = "1")]
486    pub value: i64,
487}
488#[derive(Clone, PartialEq, ::prost::Message)]
489pub struct DictionaryDeleteRequest {
490    #[prost(bytes = "vec", tag = "1")]
491    pub dictionary_name: ::prost::alloc::vec::Vec<u8>,
492    #[prost(oneof = "dictionary_delete_request::Delete", tags = "2, 3")]
493    pub delete: ::core::option::Option<dictionary_delete_request::Delete>,
494}
495/// Nested message and enum types in `_DictionaryDeleteRequest`.
496pub mod dictionary_delete_request {
497    #[derive(Clone, PartialEq, ::prost::Message)]
498    pub struct Some {
499        #[prost(bytes = "vec", repeated, tag = "1")]
500        pub fields: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
501    }
502    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
503    pub struct All {}
504    #[derive(Clone, PartialEq, ::prost::Oneof)]
505    pub enum Delete {
506        #[prost(message, tag = "2")]
507        Some(Some),
508        #[prost(message, tag = "3")]
509        All(All),
510    }
511}
512#[derive(Clone, Copy, PartialEq, ::prost::Message)]
513pub struct DictionaryDeleteResponse {}
514#[derive(Clone, PartialEq, ::prost::Message)]
515pub struct DictionaryLengthRequest {
516    #[prost(bytes = "vec", tag = "1")]
517    pub dictionary_name: ::prost::alloc::vec::Vec<u8>,
518}
519#[derive(Clone, Copy, PartialEq, ::prost::Message)]
520pub struct DictionaryLengthResponse {
521    #[prost(oneof = "dictionary_length_response::Dictionary", tags = "1, 2")]
522    pub dictionary: ::core::option::Option<dictionary_length_response::Dictionary>,
523}
524/// Nested message and enum types in `_DictionaryLengthResponse`.
525pub mod dictionary_length_response {
526    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
527    pub struct Found {
528        #[prost(uint32, tag = "1")]
529        pub length: u32,
530    }
531    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
532    pub struct Missing {}
533    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
534    pub enum Dictionary {
535        #[prost(message, tag = "1")]
536        Found(Found),
537        #[prost(message, tag = "2")]
538        Missing(Missing),
539    }
540}
541#[derive(Clone, PartialEq, ::prost::Message)]
542pub struct SetFetchRequest {
543    #[prost(bytes = "vec", tag = "1")]
544    pub set_name: ::prost::alloc::vec::Vec<u8>,
545}
546#[derive(Clone, PartialEq, ::prost::Message)]
547pub struct SetFetchResponse {
548    #[prost(oneof = "set_fetch_response::Set", tags = "1, 2")]
549    pub set: ::core::option::Option<set_fetch_response::Set>,
550}
551/// Nested message and enum types in `_SetFetchResponse`.
552pub mod set_fetch_response {
553    #[derive(Clone, PartialEq, ::prost::Message)]
554    pub struct Found {
555        #[prost(bytes = "vec", repeated, tag = "1")]
556        pub elements: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
557    }
558    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
559    pub struct Missing {}
560    #[derive(Clone, PartialEq, ::prost::Oneof)]
561    pub enum Set {
562        #[prost(message, tag = "1")]
563        Found(Found),
564        #[prost(message, tag = "2")]
565        Missing(Missing),
566    }
567}
568#[derive(Clone, PartialEq, ::prost::Message)]
569pub struct SetSampleRequest {
570    #[prost(bytes = "vec", tag = "1")]
571    pub set_name: ::prost::alloc::vec::Vec<u8>,
572    #[prost(uint64, tag = "2")]
573    pub limit: u64,
574}
575#[derive(Clone, PartialEq, ::prost::Message)]
576pub struct SetSampleResponse {
577    #[prost(oneof = "set_sample_response::Set", tags = "1, 2")]
578    pub set: ::core::option::Option<set_sample_response::Set>,
579}
580/// Nested message and enum types in `_SetSampleResponse`.
581pub mod set_sample_response {
582    #[derive(Clone, PartialEq, ::prost::Message)]
583    pub struct Found {
584        #[prost(bytes = "vec", repeated, tag = "1")]
585        pub elements: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
586    }
587    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
588    pub struct Missing {}
589    #[derive(Clone, PartialEq, ::prost::Oneof)]
590    pub enum Set {
591        #[prost(message, tag = "1")]
592        Found(Found),
593        #[prost(message, tag = "2")]
594        Missing(Missing),
595    }
596}
597#[derive(Clone, PartialEq, ::prost::Message)]
598pub struct SetUnionRequest {
599    #[prost(bytes = "vec", tag = "1")]
600    pub set_name: ::prost::alloc::vec::Vec<u8>,
601    #[prost(bytes = "vec", repeated, tag = "2")]
602    pub elements: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
603    #[prost(uint64, tag = "3")]
604    pub ttl_milliseconds: u64,
605    #[prost(bool, tag = "4")]
606    pub refresh_ttl: bool,
607}
608#[derive(Clone, Copy, PartialEq, ::prost::Message)]
609pub struct SetUnionResponse {}
610#[derive(Clone, PartialEq, ::prost::Message)]
611pub struct SetDifferenceRequest {
612    #[prost(bytes = "vec", tag = "1")]
613    pub set_name: ::prost::alloc::vec::Vec<u8>,
614    #[prost(oneof = "set_difference_request::Difference", tags = "2, 3")]
615    pub difference: ::core::option::Option<set_difference_request::Difference>,
616}
617/// Nested message and enum types in `_SetDifferenceRequest`.
618pub mod set_difference_request {
619    /// cache = request - stored
620    #[derive(Clone, PartialEq, ::prost::Message)]
621    pub struct Minuend {
622        #[prost(bytes = "vec", repeated, tag = "1")]
623        pub elements: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
624    }
625    /// cache = stored - request
626    #[derive(Clone, PartialEq, ::prost::Message)]
627    pub struct Subtrahend {
628        #[prost(oneof = "subtrahend::SubtrahendSet", tags = "1, 2")]
629        pub subtrahend_set: ::core::option::Option<subtrahend::SubtrahendSet>,
630    }
631    /// Nested message and enum types in `_Subtrahend`.
632    pub mod subtrahend {
633        /// Subtract a set of elements
634        #[derive(Clone, PartialEq, ::prost::Message)]
635        pub struct Set {
636            #[prost(bytes = "vec", repeated, tag = "1")]
637            pub elements: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
638        }
639        /// Subtract the set's identity (itself) from itself - which deletes it.
640        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
641        pub struct Identity {}
642        #[derive(Clone, PartialEq, ::prost::Oneof)]
643        pub enum SubtrahendSet {
644            #[prost(message, tag = "1")]
645            Set(Set),
646            #[prost(message, tag = "2")]
647            Identity(Identity),
648        }
649    }
650    #[derive(Clone, PartialEq, ::prost::Oneof)]
651    pub enum Difference {
652        #[prost(message, tag = "2")]
653        Minuend(Minuend),
654        #[prost(message, tag = "3")]
655        Subtrahend(Subtrahend),
656    }
657}
658#[derive(Clone, Copy, PartialEq, ::prost::Message)]
659pub struct SetDifferenceResponse {
660    #[prost(oneof = "set_difference_response::Set", tags = "1, 2")]
661    pub set: ::core::option::Option<set_difference_response::Set>,
662}
663/// Nested message and enum types in `_SetDifferenceResponse`.
664pub mod set_difference_response {
665    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
666    pub struct Found {}
667    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
668    pub struct Missing {}
669    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
670    pub enum Set {
671        #[prost(message, tag = "1")]
672        Found(Found),
673        #[prost(message, tag = "2")]
674        Missing(Missing),
675    }
676}
677#[derive(Clone, PartialEq, ::prost::Message)]
678pub struct SetContainsRequest {
679    #[prost(bytes = "vec", tag = "1")]
680    pub set_name: ::prost::alloc::vec::Vec<u8>,
681    #[prost(bytes = "vec", repeated, tag = "2")]
682    pub elements: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
683}
684#[derive(Clone, PartialEq, ::prost::Message)]
685pub struct SetContainsResponse {
686    #[prost(oneof = "set_contains_response::Set", tags = "1, 2")]
687    pub set: ::core::option::Option<set_contains_response::Set>,
688}
689/// Nested message and enum types in `_SetContainsResponse`.
690pub mod set_contains_response {
691    #[derive(Clone, PartialEq, ::prost::Message)]
692    pub struct Found {
693        /// This will be the same length as the elements passed in the request.
694        /// It represents whether each element is a member of the set, with indices corresponding to the request elements.
695        #[prost(bool, repeated, tag = "1")]
696        pub contains: ::prost::alloc::vec::Vec<bool>,
697    }
698    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
699    pub struct Missing {}
700    #[derive(Clone, PartialEq, ::prost::Oneof)]
701    pub enum Set {
702        #[prost(message, tag = "1")]
703        Found(Found),
704        #[prost(message, tag = "2")]
705        Missing(Missing),
706    }
707}
708#[derive(Clone, PartialEq, ::prost::Message)]
709pub struct SetLengthRequest {
710    #[prost(bytes = "vec", tag = "1")]
711    pub set_name: ::prost::alloc::vec::Vec<u8>,
712}
713#[derive(Clone, Copy, PartialEq, ::prost::Message)]
714pub struct SetLengthResponse {
715    #[prost(oneof = "set_length_response::Set", tags = "1, 2")]
716    pub set: ::core::option::Option<set_length_response::Set>,
717}
718/// Nested message and enum types in `_SetLengthResponse`.
719pub mod set_length_response {
720    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
721    pub struct Found {
722        #[prost(uint32, tag = "1")]
723        pub length: u32,
724    }
725    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
726    pub struct Missing {}
727    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
728    pub enum Set {
729        #[prost(message, tag = "1")]
730        Found(Found),
731        #[prost(message, tag = "2")]
732        Missing(Missing),
733    }
734}
735#[derive(Clone, PartialEq, ::prost::Message)]
736pub struct SetPopRequest {
737    #[prost(bytes = "vec", tag = "1")]
738    pub set_name: ::prost::alloc::vec::Vec<u8>,
739    #[prost(uint32, tag = "2")]
740    pub count: u32,
741}
742#[derive(Clone, PartialEq, ::prost::Message)]
743pub struct SetPopResponse {
744    #[prost(oneof = "set_pop_response::Set", tags = "1, 2")]
745    pub set: ::core::option::Option<set_pop_response::Set>,
746}
747/// Nested message and enum types in `_SetPopResponse`.
748pub mod set_pop_response {
749    #[derive(Clone, PartialEq, ::prost::Message)]
750    pub struct Found {
751        #[prost(bytes = "vec", repeated, tag = "1")]
752        pub elements: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
753    }
754    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
755    pub struct Missing {}
756    #[derive(Clone, PartialEq, ::prost::Oneof)]
757    pub enum Set {
758        #[prost(message, tag = "1")]
759        Found(Found),
760        #[prost(message, tag = "2")]
761        Missing(Missing),
762    }
763}
764#[derive(Clone, PartialEq, ::prost::Message)]
765pub struct ListConcatenateFrontRequest {
766    #[prost(bytes = "vec", tag = "1")]
767    pub list_name: ::prost::alloc::vec::Vec<u8>,
768    #[prost(bytes = "vec", repeated, tag = "2")]
769    pub values: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
770    #[prost(uint64, tag = "3")]
771    pub ttl_milliseconds: u64,
772    #[prost(bool, tag = "4")]
773    pub refresh_ttl: bool,
774    /// ensure total length <= this; remove excess from back of list
775    #[prost(uint32, tag = "5")]
776    pub truncate_back_to_size: u32,
777}
778#[derive(Clone, Copy, PartialEq, ::prost::Message)]
779pub struct ListConcatenateFrontResponse {
780    /// length of the list after the concatenation
781    #[prost(uint32, tag = "1")]
782    pub list_length: u32,
783}
784#[derive(Clone, PartialEq, ::prost::Message)]
785pub struct ListConcatenateBackRequest {
786    #[prost(bytes = "vec", tag = "1")]
787    pub list_name: ::prost::alloc::vec::Vec<u8>,
788    #[prost(bytes = "vec", repeated, tag = "2")]
789    pub values: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
790    #[prost(uint64, tag = "3")]
791    pub ttl_milliseconds: u64,
792    #[prost(bool, tag = "4")]
793    pub refresh_ttl: bool,
794    /// ensure total length <= this; remove excess from front of list
795    #[prost(uint32, tag = "5")]
796    pub truncate_front_to_size: u32,
797}
798#[derive(Clone, Copy, PartialEq, ::prost::Message)]
799pub struct ListConcatenateBackResponse {
800    /// length of the list after the concatenation
801    #[prost(uint32, tag = "1")]
802    pub list_length: u32,
803}
804/// stored = request + stored
805#[derive(Clone, PartialEq, ::prost::Message)]
806pub struct ListPushFrontRequest {
807    #[prost(bytes = "vec", tag = "1")]
808    pub list_name: ::prost::alloc::vec::Vec<u8>,
809    #[prost(bytes = "vec", tag = "2")]
810    pub value: ::prost::alloc::vec::Vec<u8>,
811    #[prost(uint64, tag = "3")]
812    pub ttl_milliseconds: u64,
813    #[prost(bool, tag = "4")]
814    pub refresh_ttl: bool,
815    /// ensure total length <= this; remove excess from back of list
816    #[prost(uint32, tag = "5")]
817    pub truncate_back_to_size: u32,
818}
819#[derive(Clone, Copy, PartialEq, ::prost::Message)]
820pub struct ListPushFrontResponse {
821    /// length of the list after the push
822    #[prost(uint32, tag = "1")]
823    pub list_length: u32,
824}
825/// stored = stored + request
826#[derive(Clone, PartialEq, ::prost::Message)]
827pub struct ListPushBackRequest {
828    #[prost(bytes = "vec", tag = "1")]
829    pub list_name: ::prost::alloc::vec::Vec<u8>,
830    #[prost(bytes = "vec", tag = "2")]
831    pub value: ::prost::alloc::vec::Vec<u8>,
832    #[prost(uint64, tag = "3")]
833    pub ttl_milliseconds: u64,
834    #[prost(bool, tag = "4")]
835    pub refresh_ttl: bool,
836    /// ensure total length <= this; remove excess from front of list
837    #[prost(uint32, tag = "5")]
838    pub truncate_front_to_size: u32,
839}
840#[derive(Clone, Copy, PartialEq, ::prost::Message)]
841pub struct ListPushBackResponse {
842    /// length of the list after the push
843    #[prost(uint32, tag = "1")]
844    pub list_length: u32,
845}
846#[derive(Clone, PartialEq, ::prost::Message)]
847pub struct ListPopFrontRequest {
848    #[prost(bytes = "vec", tag = "1")]
849    pub list_name: ::prost::alloc::vec::Vec<u8>,
850}
851#[derive(Clone, PartialEq, ::prost::Message)]
852pub struct ListPopFrontResponse {
853    #[prost(oneof = "list_pop_front_response::List", tags = "1, 2")]
854    pub list: ::core::option::Option<list_pop_front_response::List>,
855}
856/// Nested message and enum types in `_ListPopFrontResponse`.
857pub mod list_pop_front_response {
858    #[derive(Clone, PartialEq, ::prost::Message)]
859    pub struct Found {
860        #[prost(bytes = "vec", tag = "1")]
861        pub front: ::prost::alloc::vec::Vec<u8>,
862        /// length of the list after the pop
863        #[prost(uint32, tag = "2")]
864        pub list_length: u32,
865    }
866    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
867    pub struct Missing {}
868    #[derive(Clone, PartialEq, ::prost::Oneof)]
869    pub enum List {
870        #[prost(message, tag = "1")]
871        Found(Found),
872        #[prost(message, tag = "2")]
873        Missing(Missing),
874    }
875}
876#[derive(Clone, PartialEq, ::prost::Message)]
877pub struct ListPopBackRequest {
878    #[prost(bytes = "vec", tag = "1")]
879    pub list_name: ::prost::alloc::vec::Vec<u8>,
880}
881#[derive(Clone, PartialEq, ::prost::Message)]
882pub struct ListPopBackResponse {
883    #[prost(oneof = "list_pop_back_response::List", tags = "1, 2")]
884    pub list: ::core::option::Option<list_pop_back_response::List>,
885}
886/// Nested message and enum types in `_ListPopBackResponse`.
887pub mod list_pop_back_response {
888    #[derive(Clone, PartialEq, ::prost::Message)]
889    pub struct Found {
890        #[prost(bytes = "vec", tag = "1")]
891        pub back: ::prost::alloc::vec::Vec<u8>,
892        /// length of the list after the pop
893        #[prost(uint32, tag = "2")]
894        pub list_length: u32,
895    }
896    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
897    pub struct Missing {}
898    #[derive(Clone, PartialEq, ::prost::Oneof)]
899    pub enum List {
900        #[prost(message, tag = "1")]
901        Found(Found),
902        #[prost(message, tag = "2")]
903        Missing(Missing),
904    }
905}
906#[derive(Clone, Copy, PartialEq, ::prost::Message)]
907pub struct ListRange {
908    #[prost(uint32, tag = "1")]
909    pub begin_index: u32,
910    #[prost(uint32, tag = "2")]
911    pub count: u32,
912}
913#[derive(Clone, PartialEq, ::prost::Message)]
914pub struct ListEraseRequest {
915    #[prost(bytes = "vec", tag = "1")]
916    pub list_name: ::prost::alloc::vec::Vec<u8>,
917    #[prost(oneof = "list_erase_request::Erase", tags = "2, 3")]
918    pub erase: ::core::option::Option<list_erase_request::Erase>,
919}
920/// Nested message and enum types in `_ListEraseRequest`.
921pub mod list_erase_request {
922    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
923    pub struct All {}
924    #[derive(Clone, PartialEq, ::prost::Message)]
925    pub struct ListRanges {
926        #[prost(message, repeated, tag = "1")]
927        pub ranges: ::prost::alloc::vec::Vec<super::ListRange>,
928    }
929    #[derive(Clone, PartialEq, ::prost::Oneof)]
930    pub enum Erase {
931        #[prost(message, tag = "2")]
932        Some(ListRanges),
933        #[prost(message, tag = "3")]
934        All(All),
935    }
936}
937#[derive(Clone, Copy, PartialEq, ::prost::Message)]
938pub struct ListEraseResponse {
939    #[prost(oneof = "list_erase_response::List", tags = "1, 2")]
940    pub list: ::core::option::Option<list_erase_response::List>,
941}
942/// Nested message and enum types in `_ListEraseResponse`.
943pub mod list_erase_response {
944    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
945    pub struct Found {
946        #[prost(uint32, tag = "1")]
947        pub list_length: u32,
948    }
949    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
950    pub struct Missing {}
951    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
952    pub enum List {
953        #[prost(message, tag = "1")]
954        Found(Found),
955        #[prost(message, tag = "2")]
956        Missing(Missing),
957    }
958}
959#[derive(Clone, PartialEq, ::prost::Message)]
960pub struct ListRemoveRequest {
961    #[prost(bytes = "vec", tag = "1")]
962    pub list_name: ::prost::alloc::vec::Vec<u8>,
963    #[prost(oneof = "list_remove_request::Remove", tags = "2")]
964    pub remove: ::core::option::Option<list_remove_request::Remove>,
965}
966/// Nested message and enum types in `_ListRemoveRequest`.
967pub mod list_remove_request {
968    #[derive(Clone, PartialEq, ::prost::Oneof)]
969    pub enum Remove {
970        /// Remove all appearances in the list where the element is this value
971        #[prost(bytes, tag = "2")]
972        AllElementsWithValue(::prost::alloc::vec::Vec<u8>),
973    }
974}
975#[derive(Clone, Copy, PartialEq, ::prost::Message)]
976pub struct ListRemoveResponse {
977    #[prost(oneof = "list_remove_response::List", tags = "1, 2")]
978    pub list: ::core::option::Option<list_remove_response::List>,
979}
980/// Nested message and enum types in `_ListRemoveResponse`.
981pub mod list_remove_response {
982    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
983    pub struct Found {
984        #[prost(uint32, tag = "1")]
985        pub list_length: u32,
986    }
987    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
988    pub struct Missing {}
989    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
990    pub enum List {
991        #[prost(message, tag = "1")]
992        Found(Found),
993        #[prost(message, tag = "2")]
994        Missing(Missing),
995    }
996}
997#[derive(Clone, PartialEq, ::prost::Message)]
998pub struct ListFetchRequest {
999    #[prost(bytes = "vec", tag = "1")]
1000    pub list_name: ::prost::alloc::vec::Vec<u8>,
1001    /// Inclusive.
1002    /// If unbounded, 0 (start of list) by default
1003    /// A negative index counts from the end of the list
1004    #[prost(oneof = "list_fetch_request::StartIndex", tags = "2, 3")]
1005    pub start_index: ::core::option::Option<list_fetch_request::StartIndex>,
1006    /// Exclusive.
1007    /// If unbounded, this effectively means list.length()
1008    /// If end_index is > the number of elements to return, return as much as you can
1009    /// A negative index counts from the end of the list
1010    #[prost(oneof = "list_fetch_request::EndIndex", tags = "4, 5")]
1011    pub end_index: ::core::option::Option<list_fetch_request::EndIndex>,
1012}
1013/// Nested message and enum types in `_ListFetchRequest`.
1014pub mod list_fetch_request {
1015    /// Inclusive.
1016    /// If unbounded, 0 (start of list) by default
1017    /// A negative index counts from the end of the list
1018    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1019    pub enum StartIndex {
1020        #[prost(message, tag = "2")]
1021        UnboundedStart(super::super::common::Unbounded),
1022        #[prost(sint32, tag = "3")]
1023        InclusiveStart(i32),
1024    }
1025    /// Exclusive.
1026    /// If unbounded, this effectively means list.length()
1027    /// If end_index is > the number of elements to return, return as much as you can
1028    /// A negative index counts from the end of the list
1029    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1030    pub enum EndIndex {
1031        #[prost(message, tag = "4")]
1032        UnboundedEnd(super::super::common::Unbounded),
1033        #[prost(sint32, tag = "5")]
1034        ExclusiveEnd(i32),
1035    }
1036}
1037#[derive(Clone, PartialEq, ::prost::Message)]
1038pub struct ListRetainRequest {
1039    #[prost(bytes = "vec", tag = "1")]
1040    pub list_name: ::prost::alloc::vec::Vec<u8>,
1041    #[prost(uint64, tag = "6")]
1042    pub ttl_milliseconds: u64,
1043    #[prost(bool, tag = "7")]
1044    pub refresh_ttl: bool,
1045    #[prost(oneof = "list_retain_request::StartIndex", tags = "2, 3")]
1046    pub start_index: ::core::option::Option<list_retain_request::StartIndex>,
1047    #[prost(oneof = "list_retain_request::EndIndex", tags = "4, 5")]
1048    pub end_index: ::core::option::Option<list_retain_request::EndIndex>,
1049}
1050/// Nested message and enum types in `_ListRetainRequest`.
1051pub mod list_retain_request {
1052    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1053    pub enum StartIndex {
1054        #[prost(message, tag = "2")]
1055        UnboundedStart(super::super::common::Unbounded),
1056        #[prost(sint32, tag = "3")]
1057        InclusiveStart(i32),
1058    }
1059    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1060    pub enum EndIndex {
1061        #[prost(message, tag = "4")]
1062        UnboundedEnd(super::super::common::Unbounded),
1063        #[prost(sint32, tag = "5")]
1064        ExclusiveEnd(i32),
1065    }
1066}
1067#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1068pub struct ListRetainResponse {
1069    #[prost(oneof = "list_retain_response::List", tags = "1, 2")]
1070    pub list: ::core::option::Option<list_retain_response::List>,
1071}
1072/// Nested message and enum types in `_ListRetainResponse`.
1073pub mod list_retain_response {
1074    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1075    pub struct Found {
1076        #[prost(uint32, tag = "1")]
1077        pub list_length: u32,
1078    }
1079    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1080    pub struct Missing {}
1081    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1082    pub enum List {
1083        #[prost(message, tag = "1")]
1084        Found(Found),
1085        #[prost(message, tag = "2")]
1086        Missing(Missing),
1087    }
1088}
1089#[derive(Clone, PartialEq, ::prost::Message)]
1090pub struct ListFetchResponse {
1091    #[prost(oneof = "list_fetch_response::List", tags = "1, 2")]
1092    pub list: ::core::option::Option<list_fetch_response::List>,
1093}
1094/// Nested message and enum types in `_ListFetchResponse`.
1095pub mod list_fetch_response {
1096    #[derive(Clone, PartialEq, ::prost::Message)]
1097    pub struct Found {
1098        #[prost(bytes = "vec", repeated, tag = "1")]
1099        pub values: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1100    }
1101    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1102    pub struct Missing {}
1103    #[derive(Clone, PartialEq, ::prost::Oneof)]
1104    pub enum List {
1105        #[prost(message, tag = "1")]
1106        Found(Found),
1107        #[prost(message, tag = "2")]
1108        Missing(Missing),
1109    }
1110}
1111#[derive(Clone, PartialEq, ::prost::Message)]
1112pub struct ListLengthRequest {
1113    #[prost(bytes = "vec", tag = "1")]
1114    pub list_name: ::prost::alloc::vec::Vec<u8>,
1115}
1116#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1117pub struct ListLengthResponse {
1118    #[prost(oneof = "list_length_response::List", tags = "1, 2")]
1119    pub list: ::core::option::Option<list_length_response::List>,
1120}
1121/// Nested message and enum types in `_ListLengthResponse`.
1122pub mod list_length_response {
1123    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1124    pub struct Found {
1125        #[prost(uint32, tag = "1")]
1126        pub length: u32,
1127    }
1128    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1129    pub struct Missing {}
1130    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1131    pub enum List {
1132        #[prost(message, tag = "1")]
1133        Found(Found),
1134        #[prost(message, tag = "2")]
1135        Missing(Missing),
1136    }
1137}
1138#[derive(Clone, PartialEq, ::prost::Message)]
1139pub struct SortedSetElement {
1140    #[prost(bytes = "vec", tag = "1")]
1141    pub value: ::prost::alloc::vec::Vec<u8>,
1142    #[prost(double, tag = "2")]
1143    pub score: f64,
1144}
1145#[derive(Clone, PartialEq, ::prost::Message)]
1146pub struct SortedSetPutRequest {
1147    #[prost(bytes = "vec", tag = "1")]
1148    pub set_name: ::prost::alloc::vec::Vec<u8>,
1149    #[prost(message, repeated, tag = "2")]
1150    pub elements: ::prost::alloc::vec::Vec<SortedSetElement>,
1151    #[prost(uint64, tag = "3")]
1152    pub ttl_milliseconds: u64,
1153    #[prost(bool, tag = "4")]
1154    pub refresh_ttl: bool,
1155}
1156#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1157pub struct SortedSetPutResponse {}
1158#[derive(Clone, PartialEq, ::prost::Message)]
1159pub struct SortedSetFetchRequest {
1160    #[prost(bytes = "vec", tag = "1")]
1161    pub set_name: ::prost::alloc::vec::Vec<u8>,
1162    #[prost(enumeration = "sorted_set_fetch_request::Order", tag = "2")]
1163    pub order: i32,
1164    #[prost(bool, tag = "3")]
1165    pub with_scores: bool,
1166    #[prost(oneof = "sorted_set_fetch_request::Range", tags = "4, 5")]
1167    pub range: ::core::option::Option<sorted_set_fetch_request::Range>,
1168}
1169/// Nested message and enum types in `_SortedSetFetchRequest`.
1170pub mod sorted_set_fetch_request {
1171    /// Start and end are zero-based indexes, with 0 being the first element.
1172    /// A negative index indicates offsets from the end of the sorted set, with
1173    /// -1 being the last element.
1174    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1175    pub struct ByIndex {
1176        /// Start is inclusive.
1177        /// Unbounded is treated as 0.
1178        #[prost(oneof = "by_index::Start", tags = "1, 2")]
1179        pub start: ::core::option::Option<by_index::Start>,
1180        /// End is exclusive.
1181        /// Unbounded is treated as the number of elements in the sorted set.
1182        #[prost(oneof = "by_index::End", tags = "3, 4")]
1183        pub end: ::core::option::Option<by_index::End>,
1184    }
1185    /// Nested message and enum types in `_ByIndex`.
1186    pub mod by_index {
1187        /// Start is inclusive.
1188        /// Unbounded is treated as 0.
1189        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1190        pub enum Start {
1191            #[prost(message, tag = "1")]
1192            UnboundedStart(super::super::super::common::Unbounded),
1193            #[prost(sint32, tag = "2")]
1194            InclusiveStartIndex(i32),
1195        }
1196        /// End is exclusive.
1197        /// Unbounded is treated as the number of elements in the sorted set.
1198        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1199        pub enum End {
1200            #[prost(message, tag = "3")]
1201            UnboundedEnd(super::super::super::common::Unbounded),
1202            #[prost(sint32, tag = "4")]
1203            ExclusiveEndIndex(i32),
1204        }
1205    }
1206    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1207    pub struct ByScore {
1208        /// Offset and count are used to only get a range of the matching elements,
1209        /// similar to "SELECT LIMIT offset, count" in SQL.
1210        /// A negative count returns all elements from the offset.
1211        /// Use (0, -1) to return all matching elements.
1212        #[prost(uint32, tag = "5")]
1213        pub offset: u32,
1214        #[prost(sint32, tag = "6")]
1215        pub count: i32,
1216        #[prost(oneof = "by_score::Min", tags = "1, 2")]
1217        pub min: ::core::option::Option<by_score::Min>,
1218        #[prost(oneof = "by_score::Max", tags = "3, 4")]
1219        pub max: ::core::option::Option<by_score::Max>,
1220    }
1221    /// Nested message and enum types in `_ByScore`.
1222    pub mod by_score {
1223        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1224        pub struct Score {
1225            #[prost(double, tag = "1")]
1226            pub score: f64,
1227            #[prost(bool, tag = "2")]
1228            pub exclusive: bool,
1229        }
1230        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1231        pub enum Min {
1232            #[prost(message, tag = "1")]
1233            UnboundedMin(super::super::super::common::Unbounded),
1234            #[prost(message, tag = "2")]
1235            MinScore(Score),
1236        }
1237        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1238        pub enum Max {
1239            #[prost(message, tag = "3")]
1240            UnboundedMax(super::super::super::common::Unbounded),
1241            #[prost(message, tag = "4")]
1242            MaxScore(Score),
1243        }
1244    }
1245    #[derive(
1246        Clone,
1247        Copy,
1248        Debug,
1249        PartialEq,
1250        Eq,
1251        Hash,
1252        PartialOrd,
1253        Ord,
1254        ::prost::Enumeration
1255    )]
1256    #[repr(i32)]
1257    pub enum Order {
1258        Ascending = 0,
1259        Descending = 1,
1260    }
1261    impl Order {
1262        /// String value of the enum field names used in the ProtoBuf definition.
1263        ///
1264        /// The values are not transformed in any way and thus are considered stable
1265        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1266        pub fn as_str_name(&self) -> &'static str {
1267            match self {
1268                Self::Ascending => "ASCENDING",
1269                Self::Descending => "DESCENDING",
1270            }
1271        }
1272        /// Creates an enum from field names used in the ProtoBuf definition.
1273        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1274            match value {
1275                "ASCENDING" => Some(Self::Ascending),
1276                "DESCENDING" => Some(Self::Descending),
1277                _ => None,
1278            }
1279        }
1280    }
1281    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1282    pub enum Range {
1283        #[prost(message, tag = "4")]
1284        ByIndex(ByIndex),
1285        #[prost(message, tag = "5")]
1286        ByScore(ByScore),
1287    }
1288}
1289#[derive(Clone, PartialEq, ::prost::Message)]
1290pub struct SortedSetFetchResponse {
1291    #[prost(oneof = "sorted_set_fetch_response::SortedSet", tags = "1, 2")]
1292    pub sorted_set: ::core::option::Option<sorted_set_fetch_response::SortedSet>,
1293}
1294/// Nested message and enum types in `_SortedSetFetchResponse`.
1295pub mod sorted_set_fetch_response {
1296    #[derive(Clone, PartialEq, ::prost::Message)]
1297    pub struct Found {
1298        #[prost(oneof = "found::Elements", tags = "1, 2")]
1299        pub elements: ::core::option::Option<found::Elements>,
1300    }
1301    /// Nested message and enum types in `_Found`.
1302    pub mod found {
1303        #[derive(Clone, PartialEq, ::prost::Message)]
1304        pub struct ValuesWithScores {
1305            #[prost(message, repeated, tag = "1")]
1306            pub elements: ::prost::alloc::vec::Vec<super::super::SortedSetElement>,
1307        }
1308        #[derive(Clone, PartialEq, ::prost::Message)]
1309        pub struct Values {
1310            #[prost(bytes = "vec", repeated, tag = "1")]
1311            pub values: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1312        }
1313        #[derive(Clone, PartialEq, ::prost::Oneof)]
1314        pub enum Elements {
1315            #[prost(message, tag = "1")]
1316            ValuesWithScores(ValuesWithScores),
1317            #[prost(message, tag = "2")]
1318            Values(Values),
1319        }
1320    }
1321    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1322    pub struct Missing {}
1323    #[derive(Clone, PartialEq, ::prost::Oneof)]
1324    pub enum SortedSet {
1325        #[prost(message, tag = "1")]
1326        Found(Found),
1327        #[prost(message, tag = "2")]
1328        Missing(Missing),
1329    }
1330}
1331#[derive(Clone, PartialEq, ::prost::Message)]
1332pub struct SortedSetGetScoreRequest {
1333    #[prost(bytes = "vec", tag = "1")]
1334    pub set_name: ::prost::alloc::vec::Vec<u8>,
1335    #[prost(bytes = "vec", repeated, tag = "2")]
1336    pub values: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1337}
1338#[derive(Clone, PartialEq, ::prost::Message)]
1339pub struct SortedSetGetScoreResponse {
1340    #[prost(oneof = "sorted_set_get_score_response::SortedSet", tags = "1, 2")]
1341    pub sorted_set: ::core::option::Option<sorted_set_get_score_response::SortedSet>,
1342}
1343/// Nested message and enum types in `_SortedSetGetScoreResponse`.
1344pub mod sorted_set_get_score_response {
1345    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1346    pub struct SortedSetGetScoreResponsePart {
1347        #[prost(enumeration = "super::ECacheResult", tag = "1")]
1348        pub result: i32,
1349        #[prost(double, tag = "2")]
1350        pub score: f64,
1351    }
1352    #[derive(Clone, PartialEq, ::prost::Message)]
1353    pub struct SortedSetFound {
1354        #[prost(message, repeated, tag = "1")]
1355        pub elements: ::prost::alloc::vec::Vec<SortedSetGetScoreResponsePart>,
1356    }
1357    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1358    pub struct SortedSetMissing {}
1359    #[derive(Clone, PartialEq, ::prost::Oneof)]
1360    pub enum SortedSet {
1361        #[prost(message, tag = "1")]
1362        Found(SortedSetFound),
1363        #[prost(message, tag = "2")]
1364        Missing(SortedSetMissing),
1365    }
1366}
1367#[derive(Clone, PartialEq, ::prost::Message)]
1368pub struct SortedSetRemoveRequest {
1369    #[prost(bytes = "vec", tag = "1")]
1370    pub set_name: ::prost::alloc::vec::Vec<u8>,
1371    #[prost(oneof = "sorted_set_remove_request::RemoveElements", tags = "2, 3")]
1372    pub remove_elements: ::core::option::Option<
1373        sorted_set_remove_request::RemoveElements,
1374    >,
1375}
1376/// Nested message and enum types in `_SortedSetRemoveRequest`.
1377pub mod sorted_set_remove_request {
1378    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1379    pub struct All {}
1380    #[derive(Clone, PartialEq, ::prost::Message)]
1381    pub struct Some {
1382        #[prost(bytes = "vec", repeated, tag = "1")]
1383        pub values: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1384    }
1385    #[derive(Clone, PartialEq, ::prost::Oneof)]
1386    pub enum RemoveElements {
1387        #[prost(message, tag = "2")]
1388        All(All),
1389        #[prost(message, tag = "3")]
1390        Some(Some),
1391    }
1392}
1393#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1394pub struct SortedSetRemoveResponse {}
1395#[derive(Clone, PartialEq, ::prost::Message)]
1396pub struct SortedSetIncrementRequest {
1397    #[prost(bytes = "vec", tag = "1")]
1398    pub set_name: ::prost::alloc::vec::Vec<u8>,
1399    #[prost(bytes = "vec", tag = "2")]
1400    pub value: ::prost::alloc::vec::Vec<u8>,
1401    #[prost(double, tag = "3")]
1402    pub amount: f64,
1403    #[prost(uint64, tag = "4")]
1404    pub ttl_milliseconds: u64,
1405    #[prost(bool, tag = "5")]
1406    pub refresh_ttl: bool,
1407}
1408#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1409pub struct SortedSetIncrementResponse {
1410    /// The updated score stored after the increment operation.
1411    #[prost(double, tag = "1")]
1412    pub score: f64,
1413}
1414#[derive(Clone, PartialEq, ::prost::Message)]
1415pub struct SortedSetGetRankRequest {
1416    #[prost(bytes = "vec", tag = "1")]
1417    pub set_name: ::prost::alloc::vec::Vec<u8>,
1418    #[prost(bytes = "vec", tag = "2")]
1419    pub value: ::prost::alloc::vec::Vec<u8>,
1420    /// The order in which sorted set will be sorted to determine the rank.
1421    ///
1422    /// When Order.ASCENDING is specified, will return the rank of the value
1423    /// when sorted set scores are ordered from low to high. This is the default
1424    /// when no Order is specified.
1425    ///
1426    /// When Order.DESCENDING is specified, will return the rank of the value
1427    /// when sorted set scores are ordered from high to low.
1428    #[prost(enumeration = "sorted_set_get_rank_request::Order", tag = "3")]
1429    pub order: i32,
1430}
1431/// Nested message and enum types in `_SortedSetGetRankRequest`.
1432pub mod sorted_set_get_rank_request {
1433    #[derive(
1434        Clone,
1435        Copy,
1436        Debug,
1437        PartialEq,
1438        Eq,
1439        Hash,
1440        PartialOrd,
1441        Ord,
1442        ::prost::Enumeration
1443    )]
1444    #[repr(i32)]
1445    pub enum Order {
1446        Ascending = 0,
1447        Descending = 1,
1448    }
1449    impl Order {
1450        /// String value of the enum field names used in the ProtoBuf definition.
1451        ///
1452        /// The values are not transformed in any way and thus are considered stable
1453        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1454        pub fn as_str_name(&self) -> &'static str {
1455            match self {
1456                Self::Ascending => "ASCENDING",
1457                Self::Descending => "DESCENDING",
1458            }
1459        }
1460        /// Creates an enum from field names used in the ProtoBuf definition.
1461        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1462            match value {
1463                "ASCENDING" => Some(Self::Ascending),
1464                "DESCENDING" => Some(Self::Descending),
1465                _ => None,
1466            }
1467        }
1468    }
1469}
1470#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1471pub struct SortedSetGetRankResponse {
1472    #[prost(oneof = "sorted_set_get_rank_response::Rank", tags = "1, 2")]
1473    pub rank: ::core::option::Option<sorted_set_get_rank_response::Rank>,
1474}
1475/// Nested message and enum types in `_SortedSetGetRankResponse`.
1476pub mod sorted_set_get_rank_response {
1477    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1478    pub struct RankResponsePart {
1479        #[prost(enumeration = "super::ECacheResult", tag = "1")]
1480        pub result: i32,
1481        /// Rank is 0-based i.e. when sort order is descending the rank of the
1482        /// value with the highest score will be 0. Similarly for ascending order,
1483        /// value with the lowest score will have rank 0.
1484        #[prost(uint64, tag = "2")]
1485        pub rank: u64,
1486    }
1487    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1488    pub struct SortedSetMissing {}
1489    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1490    pub enum Rank {
1491        #[prost(message, tag = "1")]
1492        ElementRank(RankResponsePart),
1493        #[prost(message, tag = "2")]
1494        Missing(SortedSetMissing),
1495    }
1496}
1497#[derive(Clone, PartialEq, ::prost::Message)]
1498pub struct SortedSetLengthRequest {
1499    #[prost(bytes = "vec", tag = "1")]
1500    pub set_name: ::prost::alloc::vec::Vec<u8>,
1501}
1502#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1503pub struct SortedSetLengthResponse {
1504    #[prost(oneof = "sorted_set_length_response::SortedSet", tags = "1, 2")]
1505    pub sorted_set: ::core::option::Option<sorted_set_length_response::SortedSet>,
1506}
1507/// Nested message and enum types in `_SortedSetLengthResponse`.
1508pub mod sorted_set_length_response {
1509    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1510    pub struct Found {
1511        #[prost(uint32, tag = "1")]
1512        pub length: u32,
1513    }
1514    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1515    pub struct Missing {}
1516    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1517    pub enum SortedSet {
1518        #[prost(message, tag = "1")]
1519        Found(Found),
1520        #[prost(message, tag = "2")]
1521        Missing(Missing),
1522    }
1523}
1524#[derive(Clone, PartialEq, ::prost::Message)]
1525pub struct SortedSetLengthByScoreRequest {
1526    #[prost(bytes = "vec", tag = "1")]
1527    pub set_name: ::prost::alloc::vec::Vec<u8>,
1528    #[prost(oneof = "sorted_set_length_by_score_request::Min", tags = "2, 3, 4")]
1529    pub min: ::core::option::Option<sorted_set_length_by_score_request::Min>,
1530    #[prost(oneof = "sorted_set_length_by_score_request::Max", tags = "5, 6, 7")]
1531    pub max: ::core::option::Option<sorted_set_length_by_score_request::Max>,
1532}
1533/// Nested message and enum types in `_SortedSetLengthByScoreRequest`.
1534pub mod sorted_set_length_by_score_request {
1535    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1536    pub enum Min {
1537        #[prost(double, tag = "2")]
1538        InclusiveMin(f64),
1539        #[prost(double, tag = "3")]
1540        ExclusiveMin(f64),
1541        #[prost(message, tag = "4")]
1542        UnboundedMin(super::super::common::Unbounded),
1543    }
1544    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1545    pub enum Max {
1546        #[prost(double, tag = "5")]
1547        InclusiveMax(f64),
1548        #[prost(double, tag = "6")]
1549        ExclusiveMax(f64),
1550        #[prost(message, tag = "7")]
1551        UnboundedMax(super::super::common::Unbounded),
1552    }
1553}
1554#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1555pub struct SortedSetLengthByScoreResponse {
1556    #[prost(oneof = "sorted_set_length_by_score_response::SortedSet", tags = "1, 2")]
1557    pub sorted_set: ::core::option::Option<
1558        sorted_set_length_by_score_response::SortedSet,
1559    >,
1560}
1561/// Nested message and enum types in `_SortedSetLengthByScoreResponse`.
1562pub mod sorted_set_length_by_score_response {
1563    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1564    pub struct Found {
1565        #[prost(uint32, tag = "1")]
1566        pub length: u32,
1567    }
1568    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1569    pub struct Missing {}
1570    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1571    pub enum SortedSet {
1572        #[prost(message, tag = "1")]
1573        Found(Found),
1574        #[prost(message, tag = "2")]
1575        Missing(Missing),
1576    }
1577}
1578#[derive(Clone, PartialEq, ::prost::Message)]
1579pub struct SortedSetUnionStoreRequest {
1580    /// The destination set where the result of the union is stored.
1581    #[prost(bytes = "vec", tag = "1")]
1582    pub set_name: ::prost::alloc::vec::Vec<u8>,
1583    /// The sets to compute the union for. Note that the destination set is not implicitly included as a source.
1584    /// It must be explicitly specified in sources if its current contents need to be included in the union.
1585    #[prost(message, repeated, tag = "2")]
1586    pub sources: ::prost::alloc::vec::Vec<sorted_set_union_store_request::Source>,
1587    /// Aggregate function to determine the final score for an element that exists in multiple source sets
1588    #[prost(
1589        enumeration = "sorted_set_union_store_request::AggregateFunction",
1590        tag = "3"
1591    )]
1592    pub aggregate: i32,
1593    /// The TTL for the destination set if the result is non-empty
1594    #[prost(uint64, tag = "4")]
1595    pub ttl_milliseconds: u64,
1596}
1597/// Nested message and enum types in `_SortedSetUnionStoreRequest`.
1598pub mod sorted_set_union_store_request {
1599    #[derive(Clone, PartialEq, ::prost::Message)]
1600    pub struct Source {
1601        #[prost(bytes = "vec", tag = "1")]
1602        pub set_name: ::prost::alloc::vec::Vec<u8>,
1603        /// A multiplier applied to the score of each element in the set before aggregation. Negative and zero weights are allowed.
1604        #[prost(float, tag = "2")]
1605        pub weight: f32,
1606    }
1607    #[derive(
1608        Clone,
1609        Copy,
1610        Debug,
1611        PartialEq,
1612        Eq,
1613        Hash,
1614        PartialOrd,
1615        Ord,
1616        ::prost::Enumeration
1617    )]
1618    #[repr(i32)]
1619    pub enum AggregateFunction {
1620        /// Sum the weighted scores of an element across all the source sets. This is the default.
1621        Sum = 0,
1622        /// Use the minimum of the weight scores of an element across all the source sets.
1623        Min = 1,
1624        /// Use the maximum of the weight scores of an element across all the source sets.
1625        Max = 2,
1626    }
1627    impl AggregateFunction {
1628        /// String value of the enum field names used in the ProtoBuf definition.
1629        ///
1630        /// The values are not transformed in any way and thus are considered stable
1631        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1632        pub fn as_str_name(&self) -> &'static str {
1633            match self {
1634                Self::Sum => "SUM",
1635                Self::Min => "MIN",
1636                Self::Max => "MAX",
1637            }
1638        }
1639        /// Creates an enum from field names used in the ProtoBuf definition.
1640        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1641            match value {
1642                "SUM" => Some(Self::Sum),
1643                "MIN" => Some(Self::Min),
1644                "MAX" => Some(Self::Max),
1645                _ => None,
1646            }
1647        }
1648    }
1649}
1650#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1651pub struct SortedSetUnionStoreResponse {
1652    /// The number of elements in the destination set after the union.
1653    /// The length is 0 if the result of the union was an empty set.
1654    #[prost(uint32, tag = "1")]
1655    pub length: u32,
1656}
1657#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1658#[repr(i32)]
1659pub enum ECacheResult {
1660    Invalid = 0,
1661    Ok = 1,
1662    Hit = 2,
1663    Miss = 3,
1664}
1665impl ECacheResult {
1666    /// String value of the enum field names used in the ProtoBuf definition.
1667    ///
1668    /// The values are not transformed in any way and thus are considered stable
1669    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1670    pub fn as_str_name(&self) -> &'static str {
1671        match self {
1672            Self::Invalid => "Invalid",
1673            Self::Ok => "Ok",
1674            Self::Hit => "Hit",
1675            Self::Miss => "Miss",
1676        }
1677    }
1678    /// Creates an enum from field names used in the ProtoBuf definition.
1679    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1680        match value {
1681            "Invalid" => Some(Self::Invalid),
1682            "Ok" => Some(Self::Ok),
1683            "Hit" => Some(Self::Hit),
1684            "Miss" => Some(Self::Miss),
1685            _ => None,
1686        }
1687    }
1688}
1689/// Generated client implementations.
1690pub mod scs_client {
1691    #![allow(
1692        unused_variables,
1693        dead_code,
1694        missing_docs,
1695        clippy::wildcard_imports,
1696        clippy::let_unit_value,
1697    )]
1698    use tonic::codegen::*;
1699    use tonic::codegen::http::Uri;
1700    #[derive(Debug, Clone)]
1701    pub struct ScsClient<T> {
1702        inner: tonic::client::Grpc<T>,
1703    }
1704    impl ScsClient<tonic::transport::Channel> {
1705        /// Attempt to create a new client by connecting to a given endpoint.
1706        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1707        where
1708            D: TryInto<tonic::transport::Endpoint>,
1709            D::Error: Into<StdError>,
1710        {
1711            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1712            Ok(Self::new(conn))
1713        }
1714    }
1715    impl<T> ScsClient<T>
1716    where
1717        T: tonic::client::GrpcService<tonic::body::Body>,
1718        T::Error: Into<StdError>,
1719        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1720        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1721    {
1722        pub fn new(inner: T) -> Self {
1723            let inner = tonic::client::Grpc::new(inner);
1724            Self { inner }
1725        }
1726        pub fn with_origin(inner: T, origin: Uri) -> Self {
1727            let inner = tonic::client::Grpc::with_origin(inner, origin);
1728            Self { inner }
1729        }
1730        pub fn with_interceptor<F>(
1731            inner: T,
1732            interceptor: F,
1733        ) -> ScsClient<InterceptedService<T, F>>
1734        where
1735            F: tonic::service::Interceptor,
1736            T::ResponseBody: Default,
1737            T: tonic::codegen::Service<
1738                http::Request<tonic::body::Body>,
1739                Response = http::Response<
1740                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1741                >,
1742            >,
1743            <T as tonic::codegen::Service<
1744                http::Request<tonic::body::Body>,
1745            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1746        {
1747            ScsClient::new(InterceptedService::new(inner, interceptor))
1748        }
1749        /// Compress requests with the given encoding.
1750        ///
1751        /// This requires the server to support it otherwise it might respond with an
1752        /// error.
1753        #[must_use]
1754        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1755            self.inner = self.inner.send_compressed(encoding);
1756            self
1757        }
1758        /// Enable decompressing responses.
1759        #[must_use]
1760        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1761            self.inner = self.inner.accept_compressed(encoding);
1762            self
1763        }
1764        /// Limits the maximum size of a decoded message.
1765        ///
1766        /// Default: `4MB`
1767        #[must_use]
1768        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1769            self.inner = self.inner.max_decoding_message_size(limit);
1770            self
1771        }
1772        /// Limits the maximum size of an encoded message.
1773        ///
1774        /// Default: `usize::MAX`
1775        #[must_use]
1776        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1777            self.inner = self.inner.max_encoding_message_size(limit);
1778            self
1779        }
1780        pub async fn get(
1781            &mut self,
1782            request: impl tonic::IntoRequest<super::GetRequest>,
1783        ) -> std::result::Result<tonic::Response<super::GetResponse>, tonic::Status> {
1784            self.inner
1785                .ready()
1786                .await
1787                .map_err(|e| {
1788                    tonic::Status::unknown(
1789                        format!("Service was not ready: {}", e.into()),
1790                    )
1791                })?;
1792            let codec = tonic::codec::ProstCodec::default();
1793            let path = http::uri::PathAndQuery::from_static("/cache_client.Scs/Get");
1794            let mut req = request.into_request();
1795            req.extensions_mut().insert(GrpcMethod::new("cache_client.Scs", "Get"));
1796            self.inner.unary(req, path, codec).await
1797        }
1798        pub async fn get_with_hash(
1799            &mut self,
1800            request: impl tonic::IntoRequest<super::GetWithHashRequest>,
1801        ) -> std::result::Result<
1802            tonic::Response<super::GetWithHashResponse>,
1803            tonic::Status,
1804        > {
1805            self.inner
1806                .ready()
1807                .await
1808                .map_err(|e| {
1809                    tonic::Status::unknown(
1810                        format!("Service was not ready: {}", e.into()),
1811                    )
1812                })?;
1813            let codec = tonic::codec::ProstCodec::default();
1814            let path = http::uri::PathAndQuery::from_static(
1815                "/cache_client.Scs/GetWithHash",
1816            );
1817            let mut req = request.into_request();
1818            req.extensions_mut()
1819                .insert(GrpcMethod::new("cache_client.Scs", "GetWithHash"));
1820            self.inner.unary(req, path, codec).await
1821        }
1822        pub async fn get_batch(
1823            &mut self,
1824            request: impl tonic::IntoRequest<super::GetBatchRequest>,
1825        ) -> std::result::Result<
1826            tonic::Response<tonic::codec::Streaming<super::GetResponse>>,
1827            tonic::Status,
1828        > {
1829            self.inner
1830                .ready()
1831                .await
1832                .map_err(|e| {
1833                    tonic::Status::unknown(
1834                        format!("Service was not ready: {}", e.into()),
1835                    )
1836                })?;
1837            let codec = tonic::codec::ProstCodec::default();
1838            let path = http::uri::PathAndQuery::from_static(
1839                "/cache_client.Scs/GetBatch",
1840            );
1841            let mut req = request.into_request();
1842            req.extensions_mut().insert(GrpcMethod::new("cache_client.Scs", "GetBatch"));
1843            self.inner.server_streaming(req, path, codec).await
1844        }
1845        pub async fn set(
1846            &mut self,
1847            request: impl tonic::IntoRequest<super::SetRequest>,
1848        ) -> std::result::Result<tonic::Response<super::SetResponse>, tonic::Status> {
1849            self.inner
1850                .ready()
1851                .await
1852                .map_err(|e| {
1853                    tonic::Status::unknown(
1854                        format!("Service was not ready: {}", e.into()),
1855                    )
1856                })?;
1857            let codec = tonic::codec::ProstCodec::default();
1858            let path = http::uri::PathAndQuery::from_static("/cache_client.Scs/Set");
1859            let mut req = request.into_request();
1860            req.extensions_mut().insert(GrpcMethod::new("cache_client.Scs", "Set"));
1861            self.inner.unary(req, path, codec).await
1862        }
1863        pub async fn set_batch(
1864            &mut self,
1865            request: impl tonic::IntoRequest<super::SetBatchRequest>,
1866        ) -> std::result::Result<
1867            tonic::Response<tonic::codec::Streaming<super::SetResponse>>,
1868            tonic::Status,
1869        > {
1870            self.inner
1871                .ready()
1872                .await
1873                .map_err(|e| {
1874                    tonic::Status::unknown(
1875                        format!("Service was not ready: {}", e.into()),
1876                    )
1877                })?;
1878            let codec = tonic::codec::ProstCodec::default();
1879            let path = http::uri::PathAndQuery::from_static(
1880                "/cache_client.Scs/SetBatch",
1881            );
1882            let mut req = request.into_request();
1883            req.extensions_mut().insert(GrpcMethod::new("cache_client.Scs", "SetBatch"));
1884            self.inner.server_streaming(req, path, codec).await
1885        }
1886        pub async fn set_if(
1887            &mut self,
1888            request: impl tonic::IntoRequest<super::SetIfRequest>,
1889        ) -> std::result::Result<tonic::Response<super::SetIfResponse>, tonic::Status> {
1890            self.inner
1891                .ready()
1892                .await
1893                .map_err(|e| {
1894                    tonic::Status::unknown(
1895                        format!("Service was not ready: {}", e.into()),
1896                    )
1897                })?;
1898            let codec = tonic::codec::ProstCodec::default();
1899            let path = http::uri::PathAndQuery::from_static("/cache_client.Scs/SetIf");
1900            let mut req = request.into_request();
1901            req.extensions_mut().insert(GrpcMethod::new("cache_client.Scs", "SetIf"));
1902            self.inner.unary(req, path, codec).await
1903        }
1904        /// Conditionally set the item value based on comparing the hashes computed on the item values
1905        /// instead of comparing the entire values. This is an alternative to SetIf that saves bandwidth
1906        /// by removing the need to send the entire value to compare against.
1907        pub async fn set_if_hash(
1908            &mut self,
1909            request: impl tonic::IntoRequest<super::SetIfHashRequest>,
1910        ) -> std::result::Result<
1911            tonic::Response<super::SetIfHashResponse>,
1912            tonic::Status,
1913        > {
1914            self.inner
1915                .ready()
1916                .await
1917                .map_err(|e| {
1918                    tonic::Status::unknown(
1919                        format!("Service was not ready: {}", e.into()),
1920                    )
1921                })?;
1922            let codec = tonic::codec::ProstCodec::default();
1923            let path = http::uri::PathAndQuery::from_static(
1924                "/cache_client.Scs/SetIfHash",
1925            );
1926            let mut req = request.into_request();
1927            req.extensions_mut()
1928                .insert(GrpcMethod::new("cache_client.Scs", "SetIfHash"));
1929            self.inner.unary(req, path, codec).await
1930        }
1931        /// Deprecated because we have SetIf - Absent to cover this case.
1932        #[deprecated]
1933        pub async fn set_if_not_exists(
1934            &mut self,
1935            request: impl tonic::IntoRequest<super::SetIfNotExistsRequest>,
1936        ) -> std::result::Result<
1937            tonic::Response<super::SetIfNotExistsResponse>,
1938            tonic::Status,
1939        > {
1940            self.inner
1941                .ready()
1942                .await
1943                .map_err(|e| {
1944                    tonic::Status::unknown(
1945                        format!("Service was not ready: {}", e.into()),
1946                    )
1947                })?;
1948            let codec = tonic::codec::ProstCodec::default();
1949            let path = http::uri::PathAndQuery::from_static(
1950                "/cache_client.Scs/SetIfNotExists",
1951            );
1952            let mut req = request.into_request();
1953            req.extensions_mut()
1954                .insert(GrpcMethod::new("cache_client.Scs", "SetIfNotExists"));
1955            self.inner.unary(req, path, codec).await
1956        }
1957        pub async fn delete(
1958            &mut self,
1959            request: impl tonic::IntoRequest<super::DeleteRequest>,
1960        ) -> std::result::Result<tonic::Response<super::DeleteResponse>, tonic::Status> {
1961            self.inner
1962                .ready()
1963                .await
1964                .map_err(|e| {
1965                    tonic::Status::unknown(
1966                        format!("Service was not ready: {}", e.into()),
1967                    )
1968                })?;
1969            let codec = tonic::codec::ProstCodec::default();
1970            let path = http::uri::PathAndQuery::from_static("/cache_client.Scs/Delete");
1971            let mut req = request.into_request();
1972            req.extensions_mut().insert(GrpcMethod::new("cache_client.Scs", "Delete"));
1973            self.inner.unary(req, path, codec).await
1974        }
1975        pub async fn keys_exist(
1976            &mut self,
1977            request: impl tonic::IntoRequest<super::KeysExistRequest>,
1978        ) -> std::result::Result<
1979            tonic::Response<super::KeysExistResponse>,
1980            tonic::Status,
1981        > {
1982            self.inner
1983                .ready()
1984                .await
1985                .map_err(|e| {
1986                    tonic::Status::unknown(
1987                        format!("Service was not ready: {}", e.into()),
1988                    )
1989                })?;
1990            let codec = tonic::codec::ProstCodec::default();
1991            let path = http::uri::PathAndQuery::from_static(
1992                "/cache_client.Scs/KeysExist",
1993            );
1994            let mut req = request.into_request();
1995            req.extensions_mut()
1996                .insert(GrpcMethod::new("cache_client.Scs", "KeysExist"));
1997            self.inner.unary(req, path, codec).await
1998        }
1999        pub async fn increment(
2000            &mut self,
2001            request: impl tonic::IntoRequest<super::IncrementRequest>,
2002        ) -> std::result::Result<
2003            tonic::Response<super::IncrementResponse>,
2004            tonic::Status,
2005        > {
2006            self.inner
2007                .ready()
2008                .await
2009                .map_err(|e| {
2010                    tonic::Status::unknown(
2011                        format!("Service was not ready: {}", e.into()),
2012                    )
2013                })?;
2014            let codec = tonic::codec::ProstCodec::default();
2015            let path = http::uri::PathAndQuery::from_static(
2016                "/cache_client.Scs/Increment",
2017            );
2018            let mut req = request.into_request();
2019            req.extensions_mut()
2020                .insert(GrpcMethod::new("cache_client.Scs", "Increment"));
2021            self.inner.unary(req, path, codec).await
2022        }
2023        pub async fn update_ttl(
2024            &mut self,
2025            request: impl tonic::IntoRequest<super::UpdateTtlRequest>,
2026        ) -> std::result::Result<
2027            tonic::Response<super::UpdateTtlResponse>,
2028            tonic::Status,
2029        > {
2030            self.inner
2031                .ready()
2032                .await
2033                .map_err(|e| {
2034                    tonic::Status::unknown(
2035                        format!("Service was not ready: {}", e.into()),
2036                    )
2037                })?;
2038            let codec = tonic::codec::ProstCodec::default();
2039            let path = http::uri::PathAndQuery::from_static(
2040                "/cache_client.Scs/UpdateTtl",
2041            );
2042            let mut req = request.into_request();
2043            req.extensions_mut()
2044                .insert(GrpcMethod::new("cache_client.Scs", "UpdateTtl"));
2045            self.inner.unary(req, path, codec).await
2046        }
2047        pub async fn item_get_ttl(
2048            &mut self,
2049            request: impl tonic::IntoRequest<super::ItemGetTtlRequest>,
2050        ) -> std::result::Result<
2051            tonic::Response<super::ItemGetTtlResponse>,
2052            tonic::Status,
2053        > {
2054            self.inner
2055                .ready()
2056                .await
2057                .map_err(|e| {
2058                    tonic::Status::unknown(
2059                        format!("Service was not ready: {}", e.into()),
2060                    )
2061                })?;
2062            let codec = tonic::codec::ProstCodec::default();
2063            let path = http::uri::PathAndQuery::from_static(
2064                "/cache_client.Scs/ItemGetTtl",
2065            );
2066            let mut req = request.into_request();
2067            req.extensions_mut()
2068                .insert(GrpcMethod::new("cache_client.Scs", "ItemGetTtl"));
2069            self.inner.unary(req, path, codec).await
2070        }
2071        pub async fn item_get_type(
2072            &mut self,
2073            request: impl tonic::IntoRequest<super::ItemGetTypeRequest>,
2074        ) -> std::result::Result<
2075            tonic::Response<super::ItemGetTypeResponse>,
2076            tonic::Status,
2077        > {
2078            self.inner
2079                .ready()
2080                .await
2081                .map_err(|e| {
2082                    tonic::Status::unknown(
2083                        format!("Service was not ready: {}", e.into()),
2084                    )
2085                })?;
2086            let codec = tonic::codec::ProstCodec::default();
2087            let path = http::uri::PathAndQuery::from_static(
2088                "/cache_client.Scs/ItemGetType",
2089            );
2090            let mut req = request.into_request();
2091            req.extensions_mut()
2092                .insert(GrpcMethod::new("cache_client.Scs", "ItemGetType"));
2093            self.inner.unary(req, path, codec).await
2094        }
2095        pub async fn dictionary_get(
2096            &mut self,
2097            request: impl tonic::IntoRequest<super::DictionaryGetRequest>,
2098        ) -> std::result::Result<
2099            tonic::Response<super::DictionaryGetResponse>,
2100            tonic::Status,
2101        > {
2102            self.inner
2103                .ready()
2104                .await
2105                .map_err(|e| {
2106                    tonic::Status::unknown(
2107                        format!("Service was not ready: {}", e.into()),
2108                    )
2109                })?;
2110            let codec = tonic::codec::ProstCodec::default();
2111            let path = http::uri::PathAndQuery::from_static(
2112                "/cache_client.Scs/DictionaryGet",
2113            );
2114            let mut req = request.into_request();
2115            req.extensions_mut()
2116                .insert(GrpcMethod::new("cache_client.Scs", "DictionaryGet"));
2117            self.inner.unary(req, path, codec).await
2118        }
2119        pub async fn dictionary_fetch(
2120            &mut self,
2121            request: impl tonic::IntoRequest<super::DictionaryFetchRequest>,
2122        ) -> std::result::Result<
2123            tonic::Response<super::DictionaryFetchResponse>,
2124            tonic::Status,
2125        > {
2126            self.inner
2127                .ready()
2128                .await
2129                .map_err(|e| {
2130                    tonic::Status::unknown(
2131                        format!("Service was not ready: {}", e.into()),
2132                    )
2133                })?;
2134            let codec = tonic::codec::ProstCodec::default();
2135            let path = http::uri::PathAndQuery::from_static(
2136                "/cache_client.Scs/DictionaryFetch",
2137            );
2138            let mut req = request.into_request();
2139            req.extensions_mut()
2140                .insert(GrpcMethod::new("cache_client.Scs", "DictionaryFetch"));
2141            self.inner.unary(req, path, codec).await
2142        }
2143        pub async fn dictionary_set(
2144            &mut self,
2145            request: impl tonic::IntoRequest<super::DictionarySetRequest>,
2146        ) -> std::result::Result<
2147            tonic::Response<super::DictionarySetResponse>,
2148            tonic::Status,
2149        > {
2150            self.inner
2151                .ready()
2152                .await
2153                .map_err(|e| {
2154                    tonic::Status::unknown(
2155                        format!("Service was not ready: {}", e.into()),
2156                    )
2157                })?;
2158            let codec = tonic::codec::ProstCodec::default();
2159            let path = http::uri::PathAndQuery::from_static(
2160                "/cache_client.Scs/DictionarySet",
2161            );
2162            let mut req = request.into_request();
2163            req.extensions_mut()
2164                .insert(GrpcMethod::new("cache_client.Scs", "DictionarySet"));
2165            self.inner.unary(req, path, codec).await
2166        }
2167        pub async fn dictionary_increment(
2168            &mut self,
2169            request: impl tonic::IntoRequest<super::DictionaryIncrementRequest>,
2170        ) -> std::result::Result<
2171            tonic::Response<super::DictionaryIncrementResponse>,
2172            tonic::Status,
2173        > {
2174            self.inner
2175                .ready()
2176                .await
2177                .map_err(|e| {
2178                    tonic::Status::unknown(
2179                        format!("Service was not ready: {}", e.into()),
2180                    )
2181                })?;
2182            let codec = tonic::codec::ProstCodec::default();
2183            let path = http::uri::PathAndQuery::from_static(
2184                "/cache_client.Scs/DictionaryIncrement",
2185            );
2186            let mut req = request.into_request();
2187            req.extensions_mut()
2188                .insert(GrpcMethod::new("cache_client.Scs", "DictionaryIncrement"));
2189            self.inner.unary(req, path, codec).await
2190        }
2191        pub async fn dictionary_delete(
2192            &mut self,
2193            request: impl tonic::IntoRequest<super::DictionaryDeleteRequest>,
2194        ) -> std::result::Result<
2195            tonic::Response<super::DictionaryDeleteResponse>,
2196            tonic::Status,
2197        > {
2198            self.inner
2199                .ready()
2200                .await
2201                .map_err(|e| {
2202                    tonic::Status::unknown(
2203                        format!("Service was not ready: {}", e.into()),
2204                    )
2205                })?;
2206            let codec = tonic::codec::ProstCodec::default();
2207            let path = http::uri::PathAndQuery::from_static(
2208                "/cache_client.Scs/DictionaryDelete",
2209            );
2210            let mut req = request.into_request();
2211            req.extensions_mut()
2212                .insert(GrpcMethod::new("cache_client.Scs", "DictionaryDelete"));
2213            self.inner.unary(req, path, codec).await
2214        }
2215        pub async fn dictionary_length(
2216            &mut self,
2217            request: impl tonic::IntoRequest<super::DictionaryLengthRequest>,
2218        ) -> std::result::Result<
2219            tonic::Response<super::DictionaryLengthResponse>,
2220            tonic::Status,
2221        > {
2222            self.inner
2223                .ready()
2224                .await
2225                .map_err(|e| {
2226                    tonic::Status::unknown(
2227                        format!("Service was not ready: {}", e.into()),
2228                    )
2229                })?;
2230            let codec = tonic::codec::ProstCodec::default();
2231            let path = http::uri::PathAndQuery::from_static(
2232                "/cache_client.Scs/DictionaryLength",
2233            );
2234            let mut req = request.into_request();
2235            req.extensions_mut()
2236                .insert(GrpcMethod::new("cache_client.Scs", "DictionaryLength"));
2237            self.inner.unary(req, path, codec).await
2238        }
2239        pub async fn set_fetch(
2240            &mut self,
2241            request: impl tonic::IntoRequest<super::SetFetchRequest>,
2242        ) -> std::result::Result<
2243            tonic::Response<super::SetFetchResponse>,
2244            tonic::Status,
2245        > {
2246            self.inner
2247                .ready()
2248                .await
2249                .map_err(|e| {
2250                    tonic::Status::unknown(
2251                        format!("Service was not ready: {}", e.into()),
2252                    )
2253                })?;
2254            let codec = tonic::codec::ProstCodec::default();
2255            let path = http::uri::PathAndQuery::from_static(
2256                "/cache_client.Scs/SetFetch",
2257            );
2258            let mut req = request.into_request();
2259            req.extensions_mut().insert(GrpcMethod::new("cache_client.Scs", "SetFetch"));
2260            self.inner.unary(req, path, codec).await
2261        }
2262        pub async fn set_sample(
2263            &mut self,
2264            request: impl tonic::IntoRequest<super::SetSampleRequest>,
2265        ) -> std::result::Result<
2266            tonic::Response<super::SetSampleResponse>,
2267            tonic::Status,
2268        > {
2269            self.inner
2270                .ready()
2271                .await
2272                .map_err(|e| {
2273                    tonic::Status::unknown(
2274                        format!("Service was not ready: {}", e.into()),
2275                    )
2276                })?;
2277            let codec = tonic::codec::ProstCodec::default();
2278            let path = http::uri::PathAndQuery::from_static(
2279                "/cache_client.Scs/SetSample",
2280            );
2281            let mut req = request.into_request();
2282            req.extensions_mut()
2283                .insert(GrpcMethod::new("cache_client.Scs", "SetSample"));
2284            self.inner.unary(req, path, codec).await
2285        }
2286        pub async fn set_union(
2287            &mut self,
2288            request: impl tonic::IntoRequest<super::SetUnionRequest>,
2289        ) -> std::result::Result<
2290            tonic::Response<super::SetUnionResponse>,
2291            tonic::Status,
2292        > {
2293            self.inner
2294                .ready()
2295                .await
2296                .map_err(|e| {
2297                    tonic::Status::unknown(
2298                        format!("Service was not ready: {}", e.into()),
2299                    )
2300                })?;
2301            let codec = tonic::codec::ProstCodec::default();
2302            let path = http::uri::PathAndQuery::from_static(
2303                "/cache_client.Scs/SetUnion",
2304            );
2305            let mut req = request.into_request();
2306            req.extensions_mut().insert(GrpcMethod::new("cache_client.Scs", "SetUnion"));
2307            self.inner.unary(req, path, codec).await
2308        }
2309        pub async fn set_difference(
2310            &mut self,
2311            request: impl tonic::IntoRequest<super::SetDifferenceRequest>,
2312        ) -> std::result::Result<
2313            tonic::Response<super::SetDifferenceResponse>,
2314            tonic::Status,
2315        > {
2316            self.inner
2317                .ready()
2318                .await
2319                .map_err(|e| {
2320                    tonic::Status::unknown(
2321                        format!("Service was not ready: {}", e.into()),
2322                    )
2323                })?;
2324            let codec = tonic::codec::ProstCodec::default();
2325            let path = http::uri::PathAndQuery::from_static(
2326                "/cache_client.Scs/SetDifference",
2327            );
2328            let mut req = request.into_request();
2329            req.extensions_mut()
2330                .insert(GrpcMethod::new("cache_client.Scs", "SetDifference"));
2331            self.inner.unary(req, path, codec).await
2332        }
2333        pub async fn set_contains(
2334            &mut self,
2335            request: impl tonic::IntoRequest<super::SetContainsRequest>,
2336        ) -> std::result::Result<
2337            tonic::Response<super::SetContainsResponse>,
2338            tonic::Status,
2339        > {
2340            self.inner
2341                .ready()
2342                .await
2343                .map_err(|e| {
2344                    tonic::Status::unknown(
2345                        format!("Service was not ready: {}", e.into()),
2346                    )
2347                })?;
2348            let codec = tonic::codec::ProstCodec::default();
2349            let path = http::uri::PathAndQuery::from_static(
2350                "/cache_client.Scs/SetContains",
2351            );
2352            let mut req = request.into_request();
2353            req.extensions_mut()
2354                .insert(GrpcMethod::new("cache_client.Scs", "SetContains"));
2355            self.inner.unary(req, path, codec).await
2356        }
2357        pub async fn set_length(
2358            &mut self,
2359            request: impl tonic::IntoRequest<super::SetLengthRequest>,
2360        ) -> std::result::Result<
2361            tonic::Response<super::SetLengthResponse>,
2362            tonic::Status,
2363        > {
2364            self.inner
2365                .ready()
2366                .await
2367                .map_err(|e| {
2368                    tonic::Status::unknown(
2369                        format!("Service was not ready: {}", e.into()),
2370                    )
2371                })?;
2372            let codec = tonic::codec::ProstCodec::default();
2373            let path = http::uri::PathAndQuery::from_static(
2374                "/cache_client.Scs/SetLength",
2375            );
2376            let mut req = request.into_request();
2377            req.extensions_mut()
2378                .insert(GrpcMethod::new("cache_client.Scs", "SetLength"));
2379            self.inner.unary(req, path, codec).await
2380        }
2381        pub async fn set_pop(
2382            &mut self,
2383            request: impl tonic::IntoRequest<super::SetPopRequest>,
2384        ) -> std::result::Result<tonic::Response<super::SetPopResponse>, tonic::Status> {
2385            self.inner
2386                .ready()
2387                .await
2388                .map_err(|e| {
2389                    tonic::Status::unknown(
2390                        format!("Service was not ready: {}", e.into()),
2391                    )
2392                })?;
2393            let codec = tonic::codec::ProstCodec::default();
2394            let path = http::uri::PathAndQuery::from_static("/cache_client.Scs/SetPop");
2395            let mut req = request.into_request();
2396            req.extensions_mut().insert(GrpcMethod::new("cache_client.Scs", "SetPop"));
2397            self.inner.unary(req, path, codec).await
2398        }
2399        pub async fn list_push_front(
2400            &mut self,
2401            request: impl tonic::IntoRequest<super::ListPushFrontRequest>,
2402        ) -> std::result::Result<
2403            tonic::Response<super::ListPushFrontResponse>,
2404            tonic::Status,
2405        > {
2406            self.inner
2407                .ready()
2408                .await
2409                .map_err(|e| {
2410                    tonic::Status::unknown(
2411                        format!("Service was not ready: {}", e.into()),
2412                    )
2413                })?;
2414            let codec = tonic::codec::ProstCodec::default();
2415            let path = http::uri::PathAndQuery::from_static(
2416                "/cache_client.Scs/ListPushFront",
2417            );
2418            let mut req = request.into_request();
2419            req.extensions_mut()
2420                .insert(GrpcMethod::new("cache_client.Scs", "ListPushFront"));
2421            self.inner.unary(req, path, codec).await
2422        }
2423        pub async fn list_push_back(
2424            &mut self,
2425            request: impl tonic::IntoRequest<super::ListPushBackRequest>,
2426        ) -> std::result::Result<
2427            tonic::Response<super::ListPushBackResponse>,
2428            tonic::Status,
2429        > {
2430            self.inner
2431                .ready()
2432                .await
2433                .map_err(|e| {
2434                    tonic::Status::unknown(
2435                        format!("Service was not ready: {}", e.into()),
2436                    )
2437                })?;
2438            let codec = tonic::codec::ProstCodec::default();
2439            let path = http::uri::PathAndQuery::from_static(
2440                "/cache_client.Scs/ListPushBack",
2441            );
2442            let mut req = request.into_request();
2443            req.extensions_mut()
2444                .insert(GrpcMethod::new("cache_client.Scs", "ListPushBack"));
2445            self.inner.unary(req, path, codec).await
2446        }
2447        pub async fn list_pop_front(
2448            &mut self,
2449            request: impl tonic::IntoRequest<super::ListPopFrontRequest>,
2450        ) -> std::result::Result<
2451            tonic::Response<super::ListPopFrontResponse>,
2452            tonic::Status,
2453        > {
2454            self.inner
2455                .ready()
2456                .await
2457                .map_err(|e| {
2458                    tonic::Status::unknown(
2459                        format!("Service was not ready: {}", e.into()),
2460                    )
2461                })?;
2462            let codec = tonic::codec::ProstCodec::default();
2463            let path = http::uri::PathAndQuery::from_static(
2464                "/cache_client.Scs/ListPopFront",
2465            );
2466            let mut req = request.into_request();
2467            req.extensions_mut()
2468                .insert(GrpcMethod::new("cache_client.Scs", "ListPopFront"));
2469            self.inner.unary(req, path, codec).await
2470        }
2471        pub async fn list_pop_back(
2472            &mut self,
2473            request: impl tonic::IntoRequest<super::ListPopBackRequest>,
2474        ) -> std::result::Result<
2475            tonic::Response<super::ListPopBackResponse>,
2476            tonic::Status,
2477        > {
2478            self.inner
2479                .ready()
2480                .await
2481                .map_err(|e| {
2482                    tonic::Status::unknown(
2483                        format!("Service was not ready: {}", e.into()),
2484                    )
2485                })?;
2486            let codec = tonic::codec::ProstCodec::default();
2487            let path = http::uri::PathAndQuery::from_static(
2488                "/cache_client.Scs/ListPopBack",
2489            );
2490            let mut req = request.into_request();
2491            req.extensions_mut()
2492                .insert(GrpcMethod::new("cache_client.Scs", "ListPopBack"));
2493            self.inner.unary(req, path, codec).await
2494        }
2495        pub async fn list_erase(
2496            &mut self,
2497            request: impl tonic::IntoRequest<super::ListEraseRequest>,
2498        ) -> std::result::Result<
2499            tonic::Response<super::ListEraseResponse>,
2500            tonic::Status,
2501        > {
2502            self.inner
2503                .ready()
2504                .await
2505                .map_err(|e| {
2506                    tonic::Status::unknown(
2507                        format!("Service was not ready: {}", e.into()),
2508                    )
2509                })?;
2510            let codec = tonic::codec::ProstCodec::default();
2511            let path = http::uri::PathAndQuery::from_static(
2512                "/cache_client.Scs/ListErase",
2513            );
2514            let mut req = request.into_request();
2515            req.extensions_mut()
2516                .insert(GrpcMethod::new("cache_client.Scs", "ListErase"));
2517            self.inner.unary(req, path, codec).await
2518        }
2519        pub async fn list_remove(
2520            &mut self,
2521            request: impl tonic::IntoRequest<super::ListRemoveRequest>,
2522        ) -> std::result::Result<
2523            tonic::Response<super::ListRemoveResponse>,
2524            tonic::Status,
2525        > {
2526            self.inner
2527                .ready()
2528                .await
2529                .map_err(|e| {
2530                    tonic::Status::unknown(
2531                        format!("Service was not ready: {}", e.into()),
2532                    )
2533                })?;
2534            let codec = tonic::codec::ProstCodec::default();
2535            let path = http::uri::PathAndQuery::from_static(
2536                "/cache_client.Scs/ListRemove",
2537            );
2538            let mut req = request.into_request();
2539            req.extensions_mut()
2540                .insert(GrpcMethod::new("cache_client.Scs", "ListRemove"));
2541            self.inner.unary(req, path, codec).await
2542        }
2543        pub async fn list_fetch(
2544            &mut self,
2545            request: impl tonic::IntoRequest<super::ListFetchRequest>,
2546        ) -> std::result::Result<
2547            tonic::Response<super::ListFetchResponse>,
2548            tonic::Status,
2549        > {
2550            self.inner
2551                .ready()
2552                .await
2553                .map_err(|e| {
2554                    tonic::Status::unknown(
2555                        format!("Service was not ready: {}", e.into()),
2556                    )
2557                })?;
2558            let codec = tonic::codec::ProstCodec::default();
2559            let path = http::uri::PathAndQuery::from_static(
2560                "/cache_client.Scs/ListFetch",
2561            );
2562            let mut req = request.into_request();
2563            req.extensions_mut()
2564                .insert(GrpcMethod::new("cache_client.Scs", "ListFetch"));
2565            self.inner.unary(req, path, codec).await
2566        }
2567        pub async fn list_length(
2568            &mut self,
2569            request: impl tonic::IntoRequest<super::ListLengthRequest>,
2570        ) -> std::result::Result<
2571            tonic::Response<super::ListLengthResponse>,
2572            tonic::Status,
2573        > {
2574            self.inner
2575                .ready()
2576                .await
2577                .map_err(|e| {
2578                    tonic::Status::unknown(
2579                        format!("Service was not ready: {}", e.into()),
2580                    )
2581                })?;
2582            let codec = tonic::codec::ProstCodec::default();
2583            let path = http::uri::PathAndQuery::from_static(
2584                "/cache_client.Scs/ListLength",
2585            );
2586            let mut req = request.into_request();
2587            req.extensions_mut()
2588                .insert(GrpcMethod::new("cache_client.Scs", "ListLength"));
2589            self.inner.unary(req, path, codec).await
2590        }
2591        pub async fn list_concatenate_front(
2592            &mut self,
2593            request: impl tonic::IntoRequest<super::ListConcatenateFrontRequest>,
2594        ) -> std::result::Result<
2595            tonic::Response<super::ListConcatenateFrontResponse>,
2596            tonic::Status,
2597        > {
2598            self.inner
2599                .ready()
2600                .await
2601                .map_err(|e| {
2602                    tonic::Status::unknown(
2603                        format!("Service was not ready: {}", e.into()),
2604                    )
2605                })?;
2606            let codec = tonic::codec::ProstCodec::default();
2607            let path = http::uri::PathAndQuery::from_static(
2608                "/cache_client.Scs/ListConcatenateFront",
2609            );
2610            let mut req = request.into_request();
2611            req.extensions_mut()
2612                .insert(GrpcMethod::new("cache_client.Scs", "ListConcatenateFront"));
2613            self.inner.unary(req, path, codec).await
2614        }
2615        pub async fn list_concatenate_back(
2616            &mut self,
2617            request: impl tonic::IntoRequest<super::ListConcatenateBackRequest>,
2618        ) -> std::result::Result<
2619            tonic::Response<super::ListConcatenateBackResponse>,
2620            tonic::Status,
2621        > {
2622            self.inner
2623                .ready()
2624                .await
2625                .map_err(|e| {
2626                    tonic::Status::unknown(
2627                        format!("Service was not ready: {}", e.into()),
2628                    )
2629                })?;
2630            let codec = tonic::codec::ProstCodec::default();
2631            let path = http::uri::PathAndQuery::from_static(
2632                "/cache_client.Scs/ListConcatenateBack",
2633            );
2634            let mut req = request.into_request();
2635            req.extensions_mut()
2636                .insert(GrpcMethod::new("cache_client.Scs", "ListConcatenateBack"));
2637            self.inner.unary(req, path, codec).await
2638        }
2639        pub async fn list_retain(
2640            &mut self,
2641            request: impl tonic::IntoRequest<super::ListRetainRequest>,
2642        ) -> std::result::Result<
2643            tonic::Response<super::ListRetainResponse>,
2644            tonic::Status,
2645        > {
2646            self.inner
2647                .ready()
2648                .await
2649                .map_err(|e| {
2650                    tonic::Status::unknown(
2651                        format!("Service was not ready: {}", e.into()),
2652                    )
2653                })?;
2654            let codec = tonic::codec::ProstCodec::default();
2655            let path = http::uri::PathAndQuery::from_static(
2656                "/cache_client.Scs/ListRetain",
2657            );
2658            let mut req = request.into_request();
2659            req.extensions_mut()
2660                .insert(GrpcMethod::new("cache_client.Scs", "ListRetain"));
2661            self.inner.unary(req, path, codec).await
2662        }
2663        /// Add or Updates new element with its score to the Sorted Set.
2664        /// If sorted set doesn't exist, a new one is created with the specified
2665        /// element and its associated score.
2666        /// If an element exists, then its associate score gets overridden with the one
2667        /// provided in this operation.
2668        pub async fn sorted_set_put(
2669            &mut self,
2670            request: impl tonic::IntoRequest<super::SortedSetPutRequest>,
2671        ) -> std::result::Result<
2672            tonic::Response<super::SortedSetPutResponse>,
2673            tonic::Status,
2674        > {
2675            self.inner
2676                .ready()
2677                .await
2678                .map_err(|e| {
2679                    tonic::Status::unknown(
2680                        format!("Service was not ready: {}", e.into()),
2681                    )
2682                })?;
2683            let codec = tonic::codec::ProstCodec::default();
2684            let path = http::uri::PathAndQuery::from_static(
2685                "/cache_client.Scs/SortedSetPut",
2686            );
2687            let mut req = request.into_request();
2688            req.extensions_mut()
2689                .insert(GrpcMethod::new("cache_client.Scs", "SortedSetPut"));
2690            self.inner.unary(req, path, codec).await
2691        }
2692        /// Fetches a subset of elements in the sorted set.
2693        pub async fn sorted_set_fetch(
2694            &mut self,
2695            request: impl tonic::IntoRequest<super::SortedSetFetchRequest>,
2696        ) -> std::result::Result<
2697            tonic::Response<super::SortedSetFetchResponse>,
2698            tonic::Status,
2699        > {
2700            self.inner
2701                .ready()
2702                .await
2703                .map_err(|e| {
2704                    tonic::Status::unknown(
2705                        format!("Service was not ready: {}", e.into()),
2706                    )
2707                })?;
2708            let codec = tonic::codec::ProstCodec::default();
2709            let path = http::uri::PathAndQuery::from_static(
2710                "/cache_client.Scs/SortedSetFetch",
2711            );
2712            let mut req = request.into_request();
2713            req.extensions_mut()
2714                .insert(GrpcMethod::new("cache_client.Scs", "SortedSetFetch"));
2715            self.inner.unary(req, path, codec).await
2716        }
2717        /// Gets the specified element and its associated score if it exists in the
2718        /// sorted set.
2719        pub async fn sorted_set_get_score(
2720            &mut self,
2721            request: impl tonic::IntoRequest<super::SortedSetGetScoreRequest>,
2722        ) -> std::result::Result<
2723            tonic::Response<super::SortedSetGetScoreResponse>,
2724            tonic::Status,
2725        > {
2726            self.inner
2727                .ready()
2728                .await
2729                .map_err(|e| {
2730                    tonic::Status::unknown(
2731                        format!("Service was not ready: {}", e.into()),
2732                    )
2733                })?;
2734            let codec = tonic::codec::ProstCodec::default();
2735            let path = http::uri::PathAndQuery::from_static(
2736                "/cache_client.Scs/SortedSetGetScore",
2737            );
2738            let mut req = request.into_request();
2739            req.extensions_mut()
2740                .insert(GrpcMethod::new("cache_client.Scs", "SortedSetGetScore"));
2741            self.inner.unary(req, path, codec).await
2742        }
2743        /// Removes specified elements and their associated scores
2744        pub async fn sorted_set_remove(
2745            &mut self,
2746            request: impl tonic::IntoRequest<super::SortedSetRemoveRequest>,
2747        ) -> std::result::Result<
2748            tonic::Response<super::SortedSetRemoveResponse>,
2749            tonic::Status,
2750        > {
2751            self.inner
2752                .ready()
2753                .await
2754                .map_err(|e| {
2755                    tonic::Status::unknown(
2756                        format!("Service was not ready: {}", e.into()),
2757                    )
2758                })?;
2759            let codec = tonic::codec::ProstCodec::default();
2760            let path = http::uri::PathAndQuery::from_static(
2761                "/cache_client.Scs/SortedSetRemove",
2762            );
2763            let mut req = request.into_request();
2764            req.extensions_mut()
2765                .insert(GrpcMethod::new("cache_client.Scs", "SortedSetRemove"));
2766            self.inner.unary(req, path, codec).await
2767        }
2768        /// Changes the score associated with the element by specified amount.
2769        /// If the provided amount is negative, then the score associated with the
2770        /// element is decremented.
2771        /// If the element that needs to be incremented isn't present in the sorted
2772        /// set, it is added with specified number as the score.
2773        /// If the set itself doesn't exist then a new one with specified element and
2774        /// score is created.
2775        pub async fn sorted_set_increment(
2776            &mut self,
2777            request: impl tonic::IntoRequest<super::SortedSetIncrementRequest>,
2778        ) -> std::result::Result<
2779            tonic::Response<super::SortedSetIncrementResponse>,
2780            tonic::Status,
2781        > {
2782            self.inner
2783                .ready()
2784                .await
2785                .map_err(|e| {
2786                    tonic::Status::unknown(
2787                        format!("Service was not ready: {}", e.into()),
2788                    )
2789                })?;
2790            let codec = tonic::codec::ProstCodec::default();
2791            let path = http::uri::PathAndQuery::from_static(
2792                "/cache_client.Scs/SortedSetIncrement",
2793            );
2794            let mut req = request.into_request();
2795            req.extensions_mut()
2796                .insert(GrpcMethod::new("cache_client.Scs", "SortedSetIncrement"));
2797            self.inner.unary(req, path, codec).await
2798        }
2799        /// Gives the rank of an element.
2800        pub async fn sorted_set_get_rank(
2801            &mut self,
2802            request: impl tonic::IntoRequest<super::SortedSetGetRankRequest>,
2803        ) -> std::result::Result<
2804            tonic::Response<super::SortedSetGetRankResponse>,
2805            tonic::Status,
2806        > {
2807            self.inner
2808                .ready()
2809                .await
2810                .map_err(|e| {
2811                    tonic::Status::unknown(
2812                        format!("Service was not ready: {}", e.into()),
2813                    )
2814                })?;
2815            let codec = tonic::codec::ProstCodec::default();
2816            let path = http::uri::PathAndQuery::from_static(
2817                "/cache_client.Scs/SortedSetGetRank",
2818            );
2819            let mut req = request.into_request();
2820            req.extensions_mut()
2821                .insert(GrpcMethod::new("cache_client.Scs", "SortedSetGetRank"));
2822            self.inner.unary(req, path, codec).await
2823        }
2824        /// Returns length of the sorted set
2825        pub async fn sorted_set_length(
2826            &mut self,
2827            request: impl tonic::IntoRequest<super::SortedSetLengthRequest>,
2828        ) -> std::result::Result<
2829            tonic::Response<super::SortedSetLengthResponse>,
2830            tonic::Status,
2831        > {
2832            self.inner
2833                .ready()
2834                .await
2835                .map_err(|e| {
2836                    tonic::Status::unknown(
2837                        format!("Service was not ready: {}", e.into()),
2838                    )
2839                })?;
2840            let codec = tonic::codec::ProstCodec::default();
2841            let path = http::uri::PathAndQuery::from_static(
2842                "/cache_client.Scs/SortedSetLength",
2843            );
2844            let mut req = request.into_request();
2845            req.extensions_mut()
2846                .insert(GrpcMethod::new("cache_client.Scs", "SortedSetLength"));
2847            self.inner.unary(req, path, codec).await
2848        }
2849        /// Returns number of elements in the sorted set between a given min and max score
2850        pub async fn sorted_set_length_by_score(
2851            &mut self,
2852            request: impl tonic::IntoRequest<super::SortedSetLengthByScoreRequest>,
2853        ) -> std::result::Result<
2854            tonic::Response<super::SortedSetLengthByScoreResponse>,
2855            tonic::Status,
2856        > {
2857            self.inner
2858                .ready()
2859                .await
2860                .map_err(|e| {
2861                    tonic::Status::unknown(
2862                        format!("Service was not ready: {}", e.into()),
2863                    )
2864                })?;
2865            let codec = tonic::codec::ProstCodec::default();
2866            let path = http::uri::PathAndQuery::from_static(
2867                "/cache_client.Scs/SortedSetLengthByScore",
2868            );
2869            let mut req = request.into_request();
2870            req.extensions_mut()
2871                .insert(GrpcMethod::new("cache_client.Scs", "SortedSetLengthByScore"));
2872            self.inner.unary(req, path, codec).await
2873        }
2874        /// Computes the union of all the source sets and stores the result in itself. If the set does not
2875        /// exist, it is created with the given `ttl`. If it exists, it is overwritten with the result and
2876        /// its ttl is set to the given `ttl`. If the set exists but the result of the union is empty, it is deleted.
2877        /// The union is computed by applying the corresponding weight multiplier to the score of all elements
2878        /// in each source set, and then using the aggregate function to combine the weighted scores for elements
2879        /// existing in multiple source sets.
2880        /// Returns the number of elements in the set after storing the result of the union.
2881        pub async fn sorted_set_union_store(
2882            &mut self,
2883            request: impl tonic::IntoRequest<super::SortedSetUnionStoreRequest>,
2884        ) -> std::result::Result<
2885            tonic::Response<super::SortedSetUnionStoreResponse>,
2886            tonic::Status,
2887        > {
2888            self.inner
2889                .ready()
2890                .await
2891                .map_err(|e| {
2892                    tonic::Status::unknown(
2893                        format!("Service was not ready: {}", e.into()),
2894                    )
2895                })?;
2896            let codec = tonic::codec::ProstCodec::default();
2897            let path = http::uri::PathAndQuery::from_static(
2898                "/cache_client.Scs/SortedSetUnionStore",
2899            );
2900            let mut req = request.into_request();
2901            req.extensions_mut()
2902                .insert(GrpcMethod::new("cache_client.Scs", "SortedSetUnionStore"));
2903            self.inner.unary(req, path, codec).await
2904        }
2905    }
2906}
2907/// Generated server implementations.
2908pub mod scs_server {
2909    #![allow(
2910        unused_variables,
2911        dead_code,
2912        missing_docs,
2913        clippy::wildcard_imports,
2914        clippy::let_unit_value,
2915    )]
2916    use tonic::codegen::*;
2917    /// Generated trait containing gRPC methods that should be implemented for use with ScsServer.
2918    #[async_trait]
2919    pub trait Scs: std::marker::Send + std::marker::Sync + 'static {
2920        async fn get(
2921            &self,
2922            request: tonic::Request<super::GetRequest>,
2923        ) -> std::result::Result<tonic::Response<super::GetResponse>, tonic::Status>;
2924        async fn get_with_hash(
2925            &self,
2926            request: tonic::Request<super::GetWithHashRequest>,
2927        ) -> std::result::Result<
2928            tonic::Response<super::GetWithHashResponse>,
2929            tonic::Status,
2930        >;
2931        /// Server streaming response type for the GetBatch method.
2932        type GetBatchStream: tonic::codegen::tokio_stream::Stream<
2933                Item = std::result::Result<super::GetResponse, tonic::Status>,
2934            >
2935            + std::marker::Send
2936            + 'static;
2937        async fn get_batch(
2938            &self,
2939            request: tonic::Request<super::GetBatchRequest>,
2940        ) -> std::result::Result<tonic::Response<Self::GetBatchStream>, tonic::Status>;
2941        async fn set(
2942            &self,
2943            request: tonic::Request<super::SetRequest>,
2944        ) -> std::result::Result<tonic::Response<super::SetResponse>, tonic::Status>;
2945        /// Server streaming response type for the SetBatch method.
2946        type SetBatchStream: tonic::codegen::tokio_stream::Stream<
2947                Item = std::result::Result<super::SetResponse, tonic::Status>,
2948            >
2949            + std::marker::Send
2950            + 'static;
2951        async fn set_batch(
2952            &self,
2953            request: tonic::Request<super::SetBatchRequest>,
2954        ) -> std::result::Result<tonic::Response<Self::SetBatchStream>, tonic::Status>;
2955        async fn set_if(
2956            &self,
2957            request: tonic::Request<super::SetIfRequest>,
2958        ) -> std::result::Result<tonic::Response<super::SetIfResponse>, tonic::Status>;
2959        /// Conditionally set the item value based on comparing the hashes computed on the item values
2960        /// instead of comparing the entire values. This is an alternative to SetIf that saves bandwidth
2961        /// by removing the need to send the entire value to compare against.
2962        async fn set_if_hash(
2963            &self,
2964            request: tonic::Request<super::SetIfHashRequest>,
2965        ) -> std::result::Result<
2966            tonic::Response<super::SetIfHashResponse>,
2967            tonic::Status,
2968        >;
2969        /// Deprecated because we have SetIf - Absent to cover this case.
2970        async fn set_if_not_exists(
2971            &self,
2972            request: tonic::Request<super::SetIfNotExistsRequest>,
2973        ) -> std::result::Result<
2974            tonic::Response<super::SetIfNotExistsResponse>,
2975            tonic::Status,
2976        >;
2977        async fn delete(
2978            &self,
2979            request: tonic::Request<super::DeleteRequest>,
2980        ) -> std::result::Result<tonic::Response<super::DeleteResponse>, tonic::Status>;
2981        async fn keys_exist(
2982            &self,
2983            request: tonic::Request<super::KeysExistRequest>,
2984        ) -> std::result::Result<
2985            tonic::Response<super::KeysExistResponse>,
2986            tonic::Status,
2987        >;
2988        async fn increment(
2989            &self,
2990            request: tonic::Request<super::IncrementRequest>,
2991        ) -> std::result::Result<
2992            tonic::Response<super::IncrementResponse>,
2993            tonic::Status,
2994        >;
2995        async fn update_ttl(
2996            &self,
2997            request: tonic::Request<super::UpdateTtlRequest>,
2998        ) -> std::result::Result<
2999            tonic::Response<super::UpdateTtlResponse>,
3000            tonic::Status,
3001        >;
3002        async fn item_get_ttl(
3003            &self,
3004            request: tonic::Request<super::ItemGetTtlRequest>,
3005        ) -> std::result::Result<
3006            tonic::Response<super::ItemGetTtlResponse>,
3007            tonic::Status,
3008        >;
3009        async fn item_get_type(
3010            &self,
3011            request: tonic::Request<super::ItemGetTypeRequest>,
3012        ) -> std::result::Result<
3013            tonic::Response<super::ItemGetTypeResponse>,
3014            tonic::Status,
3015        >;
3016        async fn dictionary_get(
3017            &self,
3018            request: tonic::Request<super::DictionaryGetRequest>,
3019        ) -> std::result::Result<
3020            tonic::Response<super::DictionaryGetResponse>,
3021            tonic::Status,
3022        >;
3023        async fn dictionary_fetch(
3024            &self,
3025            request: tonic::Request<super::DictionaryFetchRequest>,
3026        ) -> std::result::Result<
3027            tonic::Response<super::DictionaryFetchResponse>,
3028            tonic::Status,
3029        >;
3030        async fn dictionary_set(
3031            &self,
3032            request: tonic::Request<super::DictionarySetRequest>,
3033        ) -> std::result::Result<
3034            tonic::Response<super::DictionarySetResponse>,
3035            tonic::Status,
3036        >;
3037        async fn dictionary_increment(
3038            &self,
3039            request: tonic::Request<super::DictionaryIncrementRequest>,
3040        ) -> std::result::Result<
3041            tonic::Response<super::DictionaryIncrementResponse>,
3042            tonic::Status,
3043        >;
3044        async fn dictionary_delete(
3045            &self,
3046            request: tonic::Request<super::DictionaryDeleteRequest>,
3047        ) -> std::result::Result<
3048            tonic::Response<super::DictionaryDeleteResponse>,
3049            tonic::Status,
3050        >;
3051        async fn dictionary_length(
3052            &self,
3053            request: tonic::Request<super::DictionaryLengthRequest>,
3054        ) -> std::result::Result<
3055            tonic::Response<super::DictionaryLengthResponse>,
3056            tonic::Status,
3057        >;
3058        async fn set_fetch(
3059            &self,
3060            request: tonic::Request<super::SetFetchRequest>,
3061        ) -> std::result::Result<
3062            tonic::Response<super::SetFetchResponse>,
3063            tonic::Status,
3064        >;
3065        async fn set_sample(
3066            &self,
3067            request: tonic::Request<super::SetSampleRequest>,
3068        ) -> std::result::Result<
3069            tonic::Response<super::SetSampleResponse>,
3070            tonic::Status,
3071        >;
3072        async fn set_union(
3073            &self,
3074            request: tonic::Request<super::SetUnionRequest>,
3075        ) -> std::result::Result<
3076            tonic::Response<super::SetUnionResponse>,
3077            tonic::Status,
3078        >;
3079        async fn set_difference(
3080            &self,
3081            request: tonic::Request<super::SetDifferenceRequest>,
3082        ) -> std::result::Result<
3083            tonic::Response<super::SetDifferenceResponse>,
3084            tonic::Status,
3085        >;
3086        async fn set_contains(
3087            &self,
3088            request: tonic::Request<super::SetContainsRequest>,
3089        ) -> std::result::Result<
3090            tonic::Response<super::SetContainsResponse>,
3091            tonic::Status,
3092        >;
3093        async fn set_length(
3094            &self,
3095            request: tonic::Request<super::SetLengthRequest>,
3096        ) -> std::result::Result<
3097            tonic::Response<super::SetLengthResponse>,
3098            tonic::Status,
3099        >;
3100        async fn set_pop(
3101            &self,
3102            request: tonic::Request<super::SetPopRequest>,
3103        ) -> std::result::Result<tonic::Response<super::SetPopResponse>, tonic::Status>;
3104        async fn list_push_front(
3105            &self,
3106            request: tonic::Request<super::ListPushFrontRequest>,
3107        ) -> std::result::Result<
3108            tonic::Response<super::ListPushFrontResponse>,
3109            tonic::Status,
3110        >;
3111        async fn list_push_back(
3112            &self,
3113            request: tonic::Request<super::ListPushBackRequest>,
3114        ) -> std::result::Result<
3115            tonic::Response<super::ListPushBackResponse>,
3116            tonic::Status,
3117        >;
3118        async fn list_pop_front(
3119            &self,
3120            request: tonic::Request<super::ListPopFrontRequest>,
3121        ) -> std::result::Result<
3122            tonic::Response<super::ListPopFrontResponse>,
3123            tonic::Status,
3124        >;
3125        async fn list_pop_back(
3126            &self,
3127            request: tonic::Request<super::ListPopBackRequest>,
3128        ) -> std::result::Result<
3129            tonic::Response<super::ListPopBackResponse>,
3130            tonic::Status,
3131        >;
3132        async fn list_erase(
3133            &self,
3134            request: tonic::Request<super::ListEraseRequest>,
3135        ) -> std::result::Result<
3136            tonic::Response<super::ListEraseResponse>,
3137            tonic::Status,
3138        >;
3139        async fn list_remove(
3140            &self,
3141            request: tonic::Request<super::ListRemoveRequest>,
3142        ) -> std::result::Result<
3143            tonic::Response<super::ListRemoveResponse>,
3144            tonic::Status,
3145        >;
3146        async fn list_fetch(
3147            &self,
3148            request: tonic::Request<super::ListFetchRequest>,
3149        ) -> std::result::Result<
3150            tonic::Response<super::ListFetchResponse>,
3151            tonic::Status,
3152        >;
3153        async fn list_length(
3154            &self,
3155            request: tonic::Request<super::ListLengthRequest>,
3156        ) -> std::result::Result<
3157            tonic::Response<super::ListLengthResponse>,
3158            tonic::Status,
3159        >;
3160        async fn list_concatenate_front(
3161            &self,
3162            request: tonic::Request<super::ListConcatenateFrontRequest>,
3163        ) -> std::result::Result<
3164            tonic::Response<super::ListConcatenateFrontResponse>,
3165            tonic::Status,
3166        >;
3167        async fn list_concatenate_back(
3168            &self,
3169            request: tonic::Request<super::ListConcatenateBackRequest>,
3170        ) -> std::result::Result<
3171            tonic::Response<super::ListConcatenateBackResponse>,
3172            tonic::Status,
3173        >;
3174        async fn list_retain(
3175            &self,
3176            request: tonic::Request<super::ListRetainRequest>,
3177        ) -> std::result::Result<
3178            tonic::Response<super::ListRetainResponse>,
3179            tonic::Status,
3180        >;
3181        /// Add or Updates new element with its score to the Sorted Set.
3182        /// If sorted set doesn't exist, a new one is created with the specified
3183        /// element and its associated score.
3184        /// If an element exists, then its associate score gets overridden with the one
3185        /// provided in this operation.
3186        async fn sorted_set_put(
3187            &self,
3188            request: tonic::Request<super::SortedSetPutRequest>,
3189        ) -> std::result::Result<
3190            tonic::Response<super::SortedSetPutResponse>,
3191            tonic::Status,
3192        >;
3193        /// Fetches a subset of elements in the sorted set.
3194        async fn sorted_set_fetch(
3195            &self,
3196            request: tonic::Request<super::SortedSetFetchRequest>,
3197        ) -> std::result::Result<
3198            tonic::Response<super::SortedSetFetchResponse>,
3199            tonic::Status,
3200        >;
3201        /// Gets the specified element and its associated score if it exists in the
3202        /// sorted set.
3203        async fn sorted_set_get_score(
3204            &self,
3205            request: tonic::Request<super::SortedSetGetScoreRequest>,
3206        ) -> std::result::Result<
3207            tonic::Response<super::SortedSetGetScoreResponse>,
3208            tonic::Status,
3209        >;
3210        /// Removes specified elements and their associated scores
3211        async fn sorted_set_remove(
3212            &self,
3213            request: tonic::Request<super::SortedSetRemoveRequest>,
3214        ) -> std::result::Result<
3215            tonic::Response<super::SortedSetRemoveResponse>,
3216            tonic::Status,
3217        >;
3218        /// Changes the score associated with the element by specified amount.
3219        /// If the provided amount is negative, then the score associated with the
3220        /// element is decremented.
3221        /// If the element that needs to be incremented isn't present in the sorted
3222        /// set, it is added with specified number as the score.
3223        /// If the set itself doesn't exist then a new one with specified element and
3224        /// score is created.
3225        async fn sorted_set_increment(
3226            &self,
3227            request: tonic::Request<super::SortedSetIncrementRequest>,
3228        ) -> std::result::Result<
3229            tonic::Response<super::SortedSetIncrementResponse>,
3230            tonic::Status,
3231        >;
3232        /// Gives the rank of an element.
3233        async fn sorted_set_get_rank(
3234            &self,
3235            request: tonic::Request<super::SortedSetGetRankRequest>,
3236        ) -> std::result::Result<
3237            tonic::Response<super::SortedSetGetRankResponse>,
3238            tonic::Status,
3239        >;
3240        /// Returns length of the sorted set
3241        async fn sorted_set_length(
3242            &self,
3243            request: tonic::Request<super::SortedSetLengthRequest>,
3244        ) -> std::result::Result<
3245            tonic::Response<super::SortedSetLengthResponse>,
3246            tonic::Status,
3247        >;
3248        /// Returns number of elements in the sorted set between a given min and max score
3249        async fn sorted_set_length_by_score(
3250            &self,
3251            request: tonic::Request<super::SortedSetLengthByScoreRequest>,
3252        ) -> std::result::Result<
3253            tonic::Response<super::SortedSetLengthByScoreResponse>,
3254            tonic::Status,
3255        >;
3256        /// Computes the union of all the source sets and stores the result in itself. If the set does not
3257        /// exist, it is created with the given `ttl`. If it exists, it is overwritten with the result and
3258        /// its ttl is set to the given `ttl`. If the set exists but the result of the union is empty, it is deleted.
3259        /// The union is computed by applying the corresponding weight multiplier to the score of all elements
3260        /// in each source set, and then using the aggregate function to combine the weighted scores for elements
3261        /// existing in multiple source sets.
3262        /// Returns the number of elements in the set after storing the result of the union.
3263        async fn sorted_set_union_store(
3264            &self,
3265            request: tonic::Request<super::SortedSetUnionStoreRequest>,
3266        ) -> std::result::Result<
3267            tonic::Response<super::SortedSetUnionStoreResponse>,
3268            tonic::Status,
3269        >;
3270    }
3271    #[derive(Debug)]
3272    pub struct ScsServer<T> {
3273        inner: Arc<T>,
3274        accept_compression_encodings: EnabledCompressionEncodings,
3275        send_compression_encodings: EnabledCompressionEncodings,
3276        max_decoding_message_size: Option<usize>,
3277        max_encoding_message_size: Option<usize>,
3278    }
3279    impl<T> ScsServer<T> {
3280        pub fn new(inner: T) -> Self {
3281            Self::from_arc(Arc::new(inner))
3282        }
3283        pub fn from_arc(inner: Arc<T>) -> Self {
3284            Self {
3285                inner,
3286                accept_compression_encodings: Default::default(),
3287                send_compression_encodings: Default::default(),
3288                max_decoding_message_size: None,
3289                max_encoding_message_size: None,
3290            }
3291        }
3292        pub fn with_interceptor<F>(
3293            inner: T,
3294            interceptor: F,
3295        ) -> InterceptedService<Self, F>
3296        where
3297            F: tonic::service::Interceptor,
3298        {
3299            InterceptedService::new(Self::new(inner), interceptor)
3300        }
3301        /// Enable decompressing requests with the given encoding.
3302        #[must_use]
3303        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
3304            self.accept_compression_encodings.enable(encoding);
3305            self
3306        }
3307        /// Compress responses with the given encoding, if the client supports it.
3308        #[must_use]
3309        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
3310            self.send_compression_encodings.enable(encoding);
3311            self
3312        }
3313        /// Limits the maximum size of a decoded message.
3314        ///
3315        /// Default: `4MB`
3316        #[must_use]
3317        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
3318            self.max_decoding_message_size = Some(limit);
3319            self
3320        }
3321        /// Limits the maximum size of an encoded message.
3322        ///
3323        /// Default: `usize::MAX`
3324        #[must_use]
3325        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
3326            self.max_encoding_message_size = Some(limit);
3327            self
3328        }
3329    }
3330    impl<T, B> tonic::codegen::Service<http::Request<B>> for ScsServer<T>
3331    where
3332        T: Scs,
3333        B: Body + std::marker::Send + 'static,
3334        B::Error: Into<StdError> + std::marker::Send + 'static,
3335    {
3336        type Response = http::Response<tonic::body::Body>;
3337        type Error = std::convert::Infallible;
3338        type Future = BoxFuture<Self::Response, Self::Error>;
3339        fn poll_ready(
3340            &mut self,
3341            _cx: &mut Context<'_>,
3342        ) -> Poll<std::result::Result<(), Self::Error>> {
3343            Poll::Ready(Ok(()))
3344        }
3345        fn call(&mut self, req: http::Request<B>) -> Self::Future {
3346            match req.uri().path() {
3347                "/cache_client.Scs/Get" => {
3348                    #[allow(non_camel_case_types)]
3349                    struct GetSvc<T: Scs>(pub Arc<T>);
3350                    impl<T: Scs> tonic::server::UnaryService<super::GetRequest>
3351                    for GetSvc<T> {
3352                        type Response = super::GetResponse;
3353                        type Future = BoxFuture<
3354                            tonic::Response<Self::Response>,
3355                            tonic::Status,
3356                        >;
3357                        fn call(
3358                            &mut self,
3359                            request: tonic::Request<super::GetRequest>,
3360                        ) -> Self::Future {
3361                            let inner = Arc::clone(&self.0);
3362                            let fut = async move {
3363                                <T as Scs>::get(&inner, request).await
3364                            };
3365                            Box::pin(fut)
3366                        }
3367                    }
3368                    let accept_compression_encodings = self.accept_compression_encodings;
3369                    let send_compression_encodings = self.send_compression_encodings;
3370                    let max_decoding_message_size = self.max_decoding_message_size;
3371                    let max_encoding_message_size = self.max_encoding_message_size;
3372                    let inner = self.inner.clone();
3373                    let fut = async move {
3374                        let method = GetSvc(inner);
3375                        let codec = tonic::codec::ProstCodec::default();
3376                        let mut grpc = tonic::server::Grpc::new(codec)
3377                            .apply_compression_config(
3378                                accept_compression_encodings,
3379                                send_compression_encodings,
3380                            )
3381                            .apply_max_message_size_config(
3382                                max_decoding_message_size,
3383                                max_encoding_message_size,
3384                            );
3385                        let res = grpc.unary(method, req).await;
3386                        Ok(res)
3387                    };
3388                    Box::pin(fut)
3389                }
3390                "/cache_client.Scs/GetWithHash" => {
3391                    #[allow(non_camel_case_types)]
3392                    struct GetWithHashSvc<T: Scs>(pub Arc<T>);
3393                    impl<T: Scs> tonic::server::UnaryService<super::GetWithHashRequest>
3394                    for GetWithHashSvc<T> {
3395                        type Response = super::GetWithHashResponse;
3396                        type Future = BoxFuture<
3397                            tonic::Response<Self::Response>,
3398                            tonic::Status,
3399                        >;
3400                        fn call(
3401                            &mut self,
3402                            request: tonic::Request<super::GetWithHashRequest>,
3403                        ) -> Self::Future {
3404                            let inner = Arc::clone(&self.0);
3405                            let fut = async move {
3406                                <T as Scs>::get_with_hash(&inner, request).await
3407                            };
3408                            Box::pin(fut)
3409                        }
3410                    }
3411                    let accept_compression_encodings = self.accept_compression_encodings;
3412                    let send_compression_encodings = self.send_compression_encodings;
3413                    let max_decoding_message_size = self.max_decoding_message_size;
3414                    let max_encoding_message_size = self.max_encoding_message_size;
3415                    let inner = self.inner.clone();
3416                    let fut = async move {
3417                        let method = GetWithHashSvc(inner);
3418                        let codec = tonic::codec::ProstCodec::default();
3419                        let mut grpc = tonic::server::Grpc::new(codec)
3420                            .apply_compression_config(
3421                                accept_compression_encodings,
3422                                send_compression_encodings,
3423                            )
3424                            .apply_max_message_size_config(
3425                                max_decoding_message_size,
3426                                max_encoding_message_size,
3427                            );
3428                        let res = grpc.unary(method, req).await;
3429                        Ok(res)
3430                    };
3431                    Box::pin(fut)
3432                }
3433                "/cache_client.Scs/GetBatch" => {
3434                    #[allow(non_camel_case_types)]
3435                    struct GetBatchSvc<T: Scs>(pub Arc<T>);
3436                    impl<
3437                        T: Scs,
3438                    > tonic::server::ServerStreamingService<super::GetBatchRequest>
3439                    for GetBatchSvc<T> {
3440                        type Response = super::GetResponse;
3441                        type ResponseStream = T::GetBatchStream;
3442                        type Future = BoxFuture<
3443                            tonic::Response<Self::ResponseStream>,
3444                            tonic::Status,
3445                        >;
3446                        fn call(
3447                            &mut self,
3448                            request: tonic::Request<super::GetBatchRequest>,
3449                        ) -> Self::Future {
3450                            let inner = Arc::clone(&self.0);
3451                            let fut = async move {
3452                                <T as Scs>::get_batch(&inner, request).await
3453                            };
3454                            Box::pin(fut)
3455                        }
3456                    }
3457                    let accept_compression_encodings = self.accept_compression_encodings;
3458                    let send_compression_encodings = self.send_compression_encodings;
3459                    let max_decoding_message_size = self.max_decoding_message_size;
3460                    let max_encoding_message_size = self.max_encoding_message_size;
3461                    let inner = self.inner.clone();
3462                    let fut = async move {
3463                        let method = GetBatchSvc(inner);
3464                        let codec = tonic::codec::ProstCodec::default();
3465                        let mut grpc = tonic::server::Grpc::new(codec)
3466                            .apply_compression_config(
3467                                accept_compression_encodings,
3468                                send_compression_encodings,
3469                            )
3470                            .apply_max_message_size_config(
3471                                max_decoding_message_size,
3472                                max_encoding_message_size,
3473                            );
3474                        let res = grpc.server_streaming(method, req).await;
3475                        Ok(res)
3476                    };
3477                    Box::pin(fut)
3478                }
3479                "/cache_client.Scs/Set" => {
3480                    #[allow(non_camel_case_types)]
3481                    struct SetSvc<T: Scs>(pub Arc<T>);
3482                    impl<T: Scs> tonic::server::UnaryService<super::SetRequest>
3483                    for SetSvc<T> {
3484                        type Response = super::SetResponse;
3485                        type Future = BoxFuture<
3486                            tonic::Response<Self::Response>,
3487                            tonic::Status,
3488                        >;
3489                        fn call(
3490                            &mut self,
3491                            request: tonic::Request<super::SetRequest>,
3492                        ) -> Self::Future {
3493                            let inner = Arc::clone(&self.0);
3494                            let fut = async move {
3495                                <T as Scs>::set(&inner, request).await
3496                            };
3497                            Box::pin(fut)
3498                        }
3499                    }
3500                    let accept_compression_encodings = self.accept_compression_encodings;
3501                    let send_compression_encodings = self.send_compression_encodings;
3502                    let max_decoding_message_size = self.max_decoding_message_size;
3503                    let max_encoding_message_size = self.max_encoding_message_size;
3504                    let inner = self.inner.clone();
3505                    let fut = async move {
3506                        let method = SetSvc(inner);
3507                        let codec = tonic::codec::ProstCodec::default();
3508                        let mut grpc = tonic::server::Grpc::new(codec)
3509                            .apply_compression_config(
3510                                accept_compression_encodings,
3511                                send_compression_encodings,
3512                            )
3513                            .apply_max_message_size_config(
3514                                max_decoding_message_size,
3515                                max_encoding_message_size,
3516                            );
3517                        let res = grpc.unary(method, req).await;
3518                        Ok(res)
3519                    };
3520                    Box::pin(fut)
3521                }
3522                "/cache_client.Scs/SetBatch" => {
3523                    #[allow(non_camel_case_types)]
3524                    struct SetBatchSvc<T: Scs>(pub Arc<T>);
3525                    impl<
3526                        T: Scs,
3527                    > tonic::server::ServerStreamingService<super::SetBatchRequest>
3528                    for SetBatchSvc<T> {
3529                        type Response = super::SetResponse;
3530                        type ResponseStream = T::SetBatchStream;
3531                        type Future = BoxFuture<
3532                            tonic::Response<Self::ResponseStream>,
3533                            tonic::Status,
3534                        >;
3535                        fn call(
3536                            &mut self,
3537                            request: tonic::Request<super::SetBatchRequest>,
3538                        ) -> Self::Future {
3539                            let inner = Arc::clone(&self.0);
3540                            let fut = async move {
3541                                <T as Scs>::set_batch(&inner, request).await
3542                            };
3543                            Box::pin(fut)
3544                        }
3545                    }
3546                    let accept_compression_encodings = self.accept_compression_encodings;
3547                    let send_compression_encodings = self.send_compression_encodings;
3548                    let max_decoding_message_size = self.max_decoding_message_size;
3549                    let max_encoding_message_size = self.max_encoding_message_size;
3550                    let inner = self.inner.clone();
3551                    let fut = async move {
3552                        let method = SetBatchSvc(inner);
3553                        let codec = tonic::codec::ProstCodec::default();
3554                        let mut grpc = tonic::server::Grpc::new(codec)
3555                            .apply_compression_config(
3556                                accept_compression_encodings,
3557                                send_compression_encodings,
3558                            )
3559                            .apply_max_message_size_config(
3560                                max_decoding_message_size,
3561                                max_encoding_message_size,
3562                            );
3563                        let res = grpc.server_streaming(method, req).await;
3564                        Ok(res)
3565                    };
3566                    Box::pin(fut)
3567                }
3568                "/cache_client.Scs/SetIf" => {
3569                    #[allow(non_camel_case_types)]
3570                    struct SetIfSvc<T: Scs>(pub Arc<T>);
3571                    impl<T: Scs> tonic::server::UnaryService<super::SetIfRequest>
3572                    for SetIfSvc<T> {
3573                        type Response = super::SetIfResponse;
3574                        type Future = BoxFuture<
3575                            tonic::Response<Self::Response>,
3576                            tonic::Status,
3577                        >;
3578                        fn call(
3579                            &mut self,
3580                            request: tonic::Request<super::SetIfRequest>,
3581                        ) -> Self::Future {
3582                            let inner = Arc::clone(&self.0);
3583                            let fut = async move {
3584                                <T as Scs>::set_if(&inner, request).await
3585                            };
3586                            Box::pin(fut)
3587                        }
3588                    }
3589                    let accept_compression_encodings = self.accept_compression_encodings;
3590                    let send_compression_encodings = self.send_compression_encodings;
3591                    let max_decoding_message_size = self.max_decoding_message_size;
3592                    let max_encoding_message_size = self.max_encoding_message_size;
3593                    let inner = self.inner.clone();
3594                    let fut = async move {
3595                        let method = SetIfSvc(inner);
3596                        let codec = tonic::codec::ProstCodec::default();
3597                        let mut grpc = tonic::server::Grpc::new(codec)
3598                            .apply_compression_config(
3599                                accept_compression_encodings,
3600                                send_compression_encodings,
3601                            )
3602                            .apply_max_message_size_config(
3603                                max_decoding_message_size,
3604                                max_encoding_message_size,
3605                            );
3606                        let res = grpc.unary(method, req).await;
3607                        Ok(res)
3608                    };
3609                    Box::pin(fut)
3610                }
3611                "/cache_client.Scs/SetIfHash" => {
3612                    #[allow(non_camel_case_types)]
3613                    struct SetIfHashSvc<T: Scs>(pub Arc<T>);
3614                    impl<T: Scs> tonic::server::UnaryService<super::SetIfHashRequest>
3615                    for SetIfHashSvc<T> {
3616                        type Response = super::SetIfHashResponse;
3617                        type Future = BoxFuture<
3618                            tonic::Response<Self::Response>,
3619                            tonic::Status,
3620                        >;
3621                        fn call(
3622                            &mut self,
3623                            request: tonic::Request<super::SetIfHashRequest>,
3624                        ) -> Self::Future {
3625                            let inner = Arc::clone(&self.0);
3626                            let fut = async move {
3627                                <T as Scs>::set_if_hash(&inner, request).await
3628                            };
3629                            Box::pin(fut)
3630                        }
3631                    }
3632                    let accept_compression_encodings = self.accept_compression_encodings;
3633                    let send_compression_encodings = self.send_compression_encodings;
3634                    let max_decoding_message_size = self.max_decoding_message_size;
3635                    let max_encoding_message_size = self.max_encoding_message_size;
3636                    let inner = self.inner.clone();
3637                    let fut = async move {
3638                        let method = SetIfHashSvc(inner);
3639                        let codec = tonic::codec::ProstCodec::default();
3640                        let mut grpc = tonic::server::Grpc::new(codec)
3641                            .apply_compression_config(
3642                                accept_compression_encodings,
3643                                send_compression_encodings,
3644                            )
3645                            .apply_max_message_size_config(
3646                                max_decoding_message_size,
3647                                max_encoding_message_size,
3648                            );
3649                        let res = grpc.unary(method, req).await;
3650                        Ok(res)
3651                    };
3652                    Box::pin(fut)
3653                }
3654                "/cache_client.Scs/SetIfNotExists" => {
3655                    #[allow(non_camel_case_types)]
3656                    struct SetIfNotExistsSvc<T: Scs>(pub Arc<T>);
3657                    impl<
3658                        T: Scs,
3659                    > tonic::server::UnaryService<super::SetIfNotExistsRequest>
3660                    for SetIfNotExistsSvc<T> {
3661                        type Response = super::SetIfNotExistsResponse;
3662                        type Future = BoxFuture<
3663                            tonic::Response<Self::Response>,
3664                            tonic::Status,
3665                        >;
3666                        fn call(
3667                            &mut self,
3668                            request: tonic::Request<super::SetIfNotExistsRequest>,
3669                        ) -> Self::Future {
3670                            let inner = Arc::clone(&self.0);
3671                            let fut = async move {
3672                                <T as Scs>::set_if_not_exists(&inner, request).await
3673                            };
3674                            Box::pin(fut)
3675                        }
3676                    }
3677                    let accept_compression_encodings = self.accept_compression_encodings;
3678                    let send_compression_encodings = self.send_compression_encodings;
3679                    let max_decoding_message_size = self.max_decoding_message_size;
3680                    let max_encoding_message_size = self.max_encoding_message_size;
3681                    let inner = self.inner.clone();
3682                    let fut = async move {
3683                        let method = SetIfNotExistsSvc(inner);
3684                        let codec = tonic::codec::ProstCodec::default();
3685                        let mut grpc = tonic::server::Grpc::new(codec)
3686                            .apply_compression_config(
3687                                accept_compression_encodings,
3688                                send_compression_encodings,
3689                            )
3690                            .apply_max_message_size_config(
3691                                max_decoding_message_size,
3692                                max_encoding_message_size,
3693                            );
3694                        let res = grpc.unary(method, req).await;
3695                        Ok(res)
3696                    };
3697                    Box::pin(fut)
3698                }
3699                "/cache_client.Scs/Delete" => {
3700                    #[allow(non_camel_case_types)]
3701                    struct DeleteSvc<T: Scs>(pub Arc<T>);
3702                    impl<T: Scs> tonic::server::UnaryService<super::DeleteRequest>
3703                    for DeleteSvc<T> {
3704                        type Response = super::DeleteResponse;
3705                        type Future = BoxFuture<
3706                            tonic::Response<Self::Response>,
3707                            tonic::Status,
3708                        >;
3709                        fn call(
3710                            &mut self,
3711                            request: tonic::Request<super::DeleteRequest>,
3712                        ) -> Self::Future {
3713                            let inner = Arc::clone(&self.0);
3714                            let fut = async move {
3715                                <T as Scs>::delete(&inner, request).await
3716                            };
3717                            Box::pin(fut)
3718                        }
3719                    }
3720                    let accept_compression_encodings = self.accept_compression_encodings;
3721                    let send_compression_encodings = self.send_compression_encodings;
3722                    let max_decoding_message_size = self.max_decoding_message_size;
3723                    let max_encoding_message_size = self.max_encoding_message_size;
3724                    let inner = self.inner.clone();
3725                    let fut = async move {
3726                        let method = DeleteSvc(inner);
3727                        let codec = tonic::codec::ProstCodec::default();
3728                        let mut grpc = tonic::server::Grpc::new(codec)
3729                            .apply_compression_config(
3730                                accept_compression_encodings,
3731                                send_compression_encodings,
3732                            )
3733                            .apply_max_message_size_config(
3734                                max_decoding_message_size,
3735                                max_encoding_message_size,
3736                            );
3737                        let res = grpc.unary(method, req).await;
3738                        Ok(res)
3739                    };
3740                    Box::pin(fut)
3741                }
3742                "/cache_client.Scs/KeysExist" => {
3743                    #[allow(non_camel_case_types)]
3744                    struct KeysExistSvc<T: Scs>(pub Arc<T>);
3745                    impl<T: Scs> tonic::server::UnaryService<super::KeysExistRequest>
3746                    for KeysExistSvc<T> {
3747                        type Response = super::KeysExistResponse;
3748                        type Future = BoxFuture<
3749                            tonic::Response<Self::Response>,
3750                            tonic::Status,
3751                        >;
3752                        fn call(
3753                            &mut self,
3754                            request: tonic::Request<super::KeysExistRequest>,
3755                        ) -> Self::Future {
3756                            let inner = Arc::clone(&self.0);
3757                            let fut = async move {
3758                                <T as Scs>::keys_exist(&inner, request).await
3759                            };
3760                            Box::pin(fut)
3761                        }
3762                    }
3763                    let accept_compression_encodings = self.accept_compression_encodings;
3764                    let send_compression_encodings = self.send_compression_encodings;
3765                    let max_decoding_message_size = self.max_decoding_message_size;
3766                    let max_encoding_message_size = self.max_encoding_message_size;
3767                    let inner = self.inner.clone();
3768                    let fut = async move {
3769                        let method = KeysExistSvc(inner);
3770                        let codec = tonic::codec::ProstCodec::default();
3771                        let mut grpc = tonic::server::Grpc::new(codec)
3772                            .apply_compression_config(
3773                                accept_compression_encodings,
3774                                send_compression_encodings,
3775                            )
3776                            .apply_max_message_size_config(
3777                                max_decoding_message_size,
3778                                max_encoding_message_size,
3779                            );
3780                        let res = grpc.unary(method, req).await;
3781                        Ok(res)
3782                    };
3783                    Box::pin(fut)
3784                }
3785                "/cache_client.Scs/Increment" => {
3786                    #[allow(non_camel_case_types)]
3787                    struct IncrementSvc<T: Scs>(pub Arc<T>);
3788                    impl<T: Scs> tonic::server::UnaryService<super::IncrementRequest>
3789                    for IncrementSvc<T> {
3790                        type Response = super::IncrementResponse;
3791                        type Future = BoxFuture<
3792                            tonic::Response<Self::Response>,
3793                            tonic::Status,
3794                        >;
3795                        fn call(
3796                            &mut self,
3797                            request: tonic::Request<super::IncrementRequest>,
3798                        ) -> Self::Future {
3799                            let inner = Arc::clone(&self.0);
3800                            let fut = async move {
3801                                <T as Scs>::increment(&inner, request).await
3802                            };
3803                            Box::pin(fut)
3804                        }
3805                    }
3806                    let accept_compression_encodings = self.accept_compression_encodings;
3807                    let send_compression_encodings = self.send_compression_encodings;
3808                    let max_decoding_message_size = self.max_decoding_message_size;
3809                    let max_encoding_message_size = self.max_encoding_message_size;
3810                    let inner = self.inner.clone();
3811                    let fut = async move {
3812                        let method = IncrementSvc(inner);
3813                        let codec = tonic::codec::ProstCodec::default();
3814                        let mut grpc = tonic::server::Grpc::new(codec)
3815                            .apply_compression_config(
3816                                accept_compression_encodings,
3817                                send_compression_encodings,
3818                            )
3819                            .apply_max_message_size_config(
3820                                max_decoding_message_size,
3821                                max_encoding_message_size,
3822                            );
3823                        let res = grpc.unary(method, req).await;
3824                        Ok(res)
3825                    };
3826                    Box::pin(fut)
3827                }
3828                "/cache_client.Scs/UpdateTtl" => {
3829                    #[allow(non_camel_case_types)]
3830                    struct UpdateTtlSvc<T: Scs>(pub Arc<T>);
3831                    impl<T: Scs> tonic::server::UnaryService<super::UpdateTtlRequest>
3832                    for UpdateTtlSvc<T> {
3833                        type Response = super::UpdateTtlResponse;
3834                        type Future = BoxFuture<
3835                            tonic::Response<Self::Response>,
3836                            tonic::Status,
3837                        >;
3838                        fn call(
3839                            &mut self,
3840                            request: tonic::Request<super::UpdateTtlRequest>,
3841                        ) -> Self::Future {
3842                            let inner = Arc::clone(&self.0);
3843                            let fut = async move {
3844                                <T as Scs>::update_ttl(&inner, request).await
3845                            };
3846                            Box::pin(fut)
3847                        }
3848                    }
3849                    let accept_compression_encodings = self.accept_compression_encodings;
3850                    let send_compression_encodings = self.send_compression_encodings;
3851                    let max_decoding_message_size = self.max_decoding_message_size;
3852                    let max_encoding_message_size = self.max_encoding_message_size;
3853                    let inner = self.inner.clone();
3854                    let fut = async move {
3855                        let method = UpdateTtlSvc(inner);
3856                        let codec = tonic::codec::ProstCodec::default();
3857                        let mut grpc = tonic::server::Grpc::new(codec)
3858                            .apply_compression_config(
3859                                accept_compression_encodings,
3860                                send_compression_encodings,
3861                            )
3862                            .apply_max_message_size_config(
3863                                max_decoding_message_size,
3864                                max_encoding_message_size,
3865                            );
3866                        let res = grpc.unary(method, req).await;
3867                        Ok(res)
3868                    };
3869                    Box::pin(fut)
3870                }
3871                "/cache_client.Scs/ItemGetTtl" => {
3872                    #[allow(non_camel_case_types)]
3873                    struct ItemGetTtlSvc<T: Scs>(pub Arc<T>);
3874                    impl<T: Scs> tonic::server::UnaryService<super::ItemGetTtlRequest>
3875                    for ItemGetTtlSvc<T> {
3876                        type Response = super::ItemGetTtlResponse;
3877                        type Future = BoxFuture<
3878                            tonic::Response<Self::Response>,
3879                            tonic::Status,
3880                        >;
3881                        fn call(
3882                            &mut self,
3883                            request: tonic::Request<super::ItemGetTtlRequest>,
3884                        ) -> Self::Future {
3885                            let inner = Arc::clone(&self.0);
3886                            let fut = async move {
3887                                <T as Scs>::item_get_ttl(&inner, request).await
3888                            };
3889                            Box::pin(fut)
3890                        }
3891                    }
3892                    let accept_compression_encodings = self.accept_compression_encodings;
3893                    let send_compression_encodings = self.send_compression_encodings;
3894                    let max_decoding_message_size = self.max_decoding_message_size;
3895                    let max_encoding_message_size = self.max_encoding_message_size;
3896                    let inner = self.inner.clone();
3897                    let fut = async move {
3898                        let method = ItemGetTtlSvc(inner);
3899                        let codec = tonic::codec::ProstCodec::default();
3900                        let mut grpc = tonic::server::Grpc::new(codec)
3901                            .apply_compression_config(
3902                                accept_compression_encodings,
3903                                send_compression_encodings,
3904                            )
3905                            .apply_max_message_size_config(
3906                                max_decoding_message_size,
3907                                max_encoding_message_size,
3908                            );
3909                        let res = grpc.unary(method, req).await;
3910                        Ok(res)
3911                    };
3912                    Box::pin(fut)
3913                }
3914                "/cache_client.Scs/ItemGetType" => {
3915                    #[allow(non_camel_case_types)]
3916                    struct ItemGetTypeSvc<T: Scs>(pub Arc<T>);
3917                    impl<T: Scs> tonic::server::UnaryService<super::ItemGetTypeRequest>
3918                    for ItemGetTypeSvc<T> {
3919                        type Response = super::ItemGetTypeResponse;
3920                        type Future = BoxFuture<
3921                            tonic::Response<Self::Response>,
3922                            tonic::Status,
3923                        >;
3924                        fn call(
3925                            &mut self,
3926                            request: tonic::Request<super::ItemGetTypeRequest>,
3927                        ) -> Self::Future {
3928                            let inner = Arc::clone(&self.0);
3929                            let fut = async move {
3930                                <T as Scs>::item_get_type(&inner, request).await
3931                            };
3932                            Box::pin(fut)
3933                        }
3934                    }
3935                    let accept_compression_encodings = self.accept_compression_encodings;
3936                    let send_compression_encodings = self.send_compression_encodings;
3937                    let max_decoding_message_size = self.max_decoding_message_size;
3938                    let max_encoding_message_size = self.max_encoding_message_size;
3939                    let inner = self.inner.clone();
3940                    let fut = async move {
3941                        let method = ItemGetTypeSvc(inner);
3942                        let codec = tonic::codec::ProstCodec::default();
3943                        let mut grpc = tonic::server::Grpc::new(codec)
3944                            .apply_compression_config(
3945                                accept_compression_encodings,
3946                                send_compression_encodings,
3947                            )
3948                            .apply_max_message_size_config(
3949                                max_decoding_message_size,
3950                                max_encoding_message_size,
3951                            );
3952                        let res = grpc.unary(method, req).await;
3953                        Ok(res)
3954                    };
3955                    Box::pin(fut)
3956                }
3957                "/cache_client.Scs/DictionaryGet" => {
3958                    #[allow(non_camel_case_types)]
3959                    struct DictionaryGetSvc<T: Scs>(pub Arc<T>);
3960                    impl<T: Scs> tonic::server::UnaryService<super::DictionaryGetRequest>
3961                    for DictionaryGetSvc<T> {
3962                        type Response = super::DictionaryGetResponse;
3963                        type Future = BoxFuture<
3964                            tonic::Response<Self::Response>,
3965                            tonic::Status,
3966                        >;
3967                        fn call(
3968                            &mut self,
3969                            request: tonic::Request<super::DictionaryGetRequest>,
3970                        ) -> Self::Future {
3971                            let inner = Arc::clone(&self.0);
3972                            let fut = async move {
3973                                <T as Scs>::dictionary_get(&inner, request).await
3974                            };
3975                            Box::pin(fut)
3976                        }
3977                    }
3978                    let accept_compression_encodings = self.accept_compression_encodings;
3979                    let send_compression_encodings = self.send_compression_encodings;
3980                    let max_decoding_message_size = self.max_decoding_message_size;
3981                    let max_encoding_message_size = self.max_encoding_message_size;
3982                    let inner = self.inner.clone();
3983                    let fut = async move {
3984                        let method = DictionaryGetSvc(inner);
3985                        let codec = tonic::codec::ProstCodec::default();
3986                        let mut grpc = tonic::server::Grpc::new(codec)
3987                            .apply_compression_config(
3988                                accept_compression_encodings,
3989                                send_compression_encodings,
3990                            )
3991                            .apply_max_message_size_config(
3992                                max_decoding_message_size,
3993                                max_encoding_message_size,
3994                            );
3995                        let res = grpc.unary(method, req).await;
3996                        Ok(res)
3997                    };
3998                    Box::pin(fut)
3999                }
4000                "/cache_client.Scs/DictionaryFetch" => {
4001                    #[allow(non_camel_case_types)]
4002                    struct DictionaryFetchSvc<T: Scs>(pub Arc<T>);
4003                    impl<
4004                        T: Scs,
4005                    > tonic::server::UnaryService<super::DictionaryFetchRequest>
4006                    for DictionaryFetchSvc<T> {
4007                        type Response = super::DictionaryFetchResponse;
4008                        type Future = BoxFuture<
4009                            tonic::Response<Self::Response>,
4010                            tonic::Status,
4011                        >;
4012                        fn call(
4013                            &mut self,
4014                            request: tonic::Request<super::DictionaryFetchRequest>,
4015                        ) -> Self::Future {
4016                            let inner = Arc::clone(&self.0);
4017                            let fut = async move {
4018                                <T as Scs>::dictionary_fetch(&inner, request).await
4019                            };
4020                            Box::pin(fut)
4021                        }
4022                    }
4023                    let accept_compression_encodings = self.accept_compression_encodings;
4024                    let send_compression_encodings = self.send_compression_encodings;
4025                    let max_decoding_message_size = self.max_decoding_message_size;
4026                    let max_encoding_message_size = self.max_encoding_message_size;
4027                    let inner = self.inner.clone();
4028                    let fut = async move {
4029                        let method = DictionaryFetchSvc(inner);
4030                        let codec = tonic::codec::ProstCodec::default();
4031                        let mut grpc = tonic::server::Grpc::new(codec)
4032                            .apply_compression_config(
4033                                accept_compression_encodings,
4034                                send_compression_encodings,
4035                            )
4036                            .apply_max_message_size_config(
4037                                max_decoding_message_size,
4038                                max_encoding_message_size,
4039                            );
4040                        let res = grpc.unary(method, req).await;
4041                        Ok(res)
4042                    };
4043                    Box::pin(fut)
4044                }
4045                "/cache_client.Scs/DictionarySet" => {
4046                    #[allow(non_camel_case_types)]
4047                    struct DictionarySetSvc<T: Scs>(pub Arc<T>);
4048                    impl<T: Scs> tonic::server::UnaryService<super::DictionarySetRequest>
4049                    for DictionarySetSvc<T> {
4050                        type Response = super::DictionarySetResponse;
4051                        type Future = BoxFuture<
4052                            tonic::Response<Self::Response>,
4053                            tonic::Status,
4054                        >;
4055                        fn call(
4056                            &mut self,
4057                            request: tonic::Request<super::DictionarySetRequest>,
4058                        ) -> Self::Future {
4059                            let inner = Arc::clone(&self.0);
4060                            let fut = async move {
4061                                <T as Scs>::dictionary_set(&inner, request).await
4062                            };
4063                            Box::pin(fut)
4064                        }
4065                    }
4066                    let accept_compression_encodings = self.accept_compression_encodings;
4067                    let send_compression_encodings = self.send_compression_encodings;
4068                    let max_decoding_message_size = self.max_decoding_message_size;
4069                    let max_encoding_message_size = self.max_encoding_message_size;
4070                    let inner = self.inner.clone();
4071                    let fut = async move {
4072                        let method = DictionarySetSvc(inner);
4073                        let codec = tonic::codec::ProstCodec::default();
4074                        let mut grpc = tonic::server::Grpc::new(codec)
4075                            .apply_compression_config(
4076                                accept_compression_encodings,
4077                                send_compression_encodings,
4078                            )
4079                            .apply_max_message_size_config(
4080                                max_decoding_message_size,
4081                                max_encoding_message_size,
4082                            );
4083                        let res = grpc.unary(method, req).await;
4084                        Ok(res)
4085                    };
4086                    Box::pin(fut)
4087                }
4088                "/cache_client.Scs/DictionaryIncrement" => {
4089                    #[allow(non_camel_case_types)]
4090                    struct DictionaryIncrementSvc<T: Scs>(pub Arc<T>);
4091                    impl<
4092                        T: Scs,
4093                    > tonic::server::UnaryService<super::DictionaryIncrementRequest>
4094                    for DictionaryIncrementSvc<T> {
4095                        type Response = super::DictionaryIncrementResponse;
4096                        type Future = BoxFuture<
4097                            tonic::Response<Self::Response>,
4098                            tonic::Status,
4099                        >;
4100                        fn call(
4101                            &mut self,
4102                            request: tonic::Request<super::DictionaryIncrementRequest>,
4103                        ) -> Self::Future {
4104                            let inner = Arc::clone(&self.0);
4105                            let fut = async move {
4106                                <T as Scs>::dictionary_increment(&inner, request).await
4107                            };
4108                            Box::pin(fut)
4109                        }
4110                    }
4111                    let accept_compression_encodings = self.accept_compression_encodings;
4112                    let send_compression_encodings = self.send_compression_encodings;
4113                    let max_decoding_message_size = self.max_decoding_message_size;
4114                    let max_encoding_message_size = self.max_encoding_message_size;
4115                    let inner = self.inner.clone();
4116                    let fut = async move {
4117                        let method = DictionaryIncrementSvc(inner);
4118                        let codec = tonic::codec::ProstCodec::default();
4119                        let mut grpc = tonic::server::Grpc::new(codec)
4120                            .apply_compression_config(
4121                                accept_compression_encodings,
4122                                send_compression_encodings,
4123                            )
4124                            .apply_max_message_size_config(
4125                                max_decoding_message_size,
4126                                max_encoding_message_size,
4127                            );
4128                        let res = grpc.unary(method, req).await;
4129                        Ok(res)
4130                    };
4131                    Box::pin(fut)
4132                }
4133                "/cache_client.Scs/DictionaryDelete" => {
4134                    #[allow(non_camel_case_types)]
4135                    struct DictionaryDeleteSvc<T: Scs>(pub Arc<T>);
4136                    impl<
4137                        T: Scs,
4138                    > tonic::server::UnaryService<super::DictionaryDeleteRequest>
4139                    for DictionaryDeleteSvc<T> {
4140                        type Response = super::DictionaryDeleteResponse;
4141                        type Future = BoxFuture<
4142                            tonic::Response<Self::Response>,
4143                            tonic::Status,
4144                        >;
4145                        fn call(
4146                            &mut self,
4147                            request: tonic::Request<super::DictionaryDeleteRequest>,
4148                        ) -> Self::Future {
4149                            let inner = Arc::clone(&self.0);
4150                            let fut = async move {
4151                                <T as Scs>::dictionary_delete(&inner, request).await
4152                            };
4153                            Box::pin(fut)
4154                        }
4155                    }
4156                    let accept_compression_encodings = self.accept_compression_encodings;
4157                    let send_compression_encodings = self.send_compression_encodings;
4158                    let max_decoding_message_size = self.max_decoding_message_size;
4159                    let max_encoding_message_size = self.max_encoding_message_size;
4160                    let inner = self.inner.clone();
4161                    let fut = async move {
4162                        let method = DictionaryDeleteSvc(inner);
4163                        let codec = tonic::codec::ProstCodec::default();
4164                        let mut grpc = tonic::server::Grpc::new(codec)
4165                            .apply_compression_config(
4166                                accept_compression_encodings,
4167                                send_compression_encodings,
4168                            )
4169                            .apply_max_message_size_config(
4170                                max_decoding_message_size,
4171                                max_encoding_message_size,
4172                            );
4173                        let res = grpc.unary(method, req).await;
4174                        Ok(res)
4175                    };
4176                    Box::pin(fut)
4177                }
4178                "/cache_client.Scs/DictionaryLength" => {
4179                    #[allow(non_camel_case_types)]
4180                    struct DictionaryLengthSvc<T: Scs>(pub Arc<T>);
4181                    impl<
4182                        T: Scs,
4183                    > tonic::server::UnaryService<super::DictionaryLengthRequest>
4184                    for DictionaryLengthSvc<T> {
4185                        type Response = super::DictionaryLengthResponse;
4186                        type Future = BoxFuture<
4187                            tonic::Response<Self::Response>,
4188                            tonic::Status,
4189                        >;
4190                        fn call(
4191                            &mut self,
4192                            request: tonic::Request<super::DictionaryLengthRequest>,
4193                        ) -> Self::Future {
4194                            let inner = Arc::clone(&self.0);
4195                            let fut = async move {
4196                                <T as Scs>::dictionary_length(&inner, request).await
4197                            };
4198                            Box::pin(fut)
4199                        }
4200                    }
4201                    let accept_compression_encodings = self.accept_compression_encodings;
4202                    let send_compression_encodings = self.send_compression_encodings;
4203                    let max_decoding_message_size = self.max_decoding_message_size;
4204                    let max_encoding_message_size = self.max_encoding_message_size;
4205                    let inner = self.inner.clone();
4206                    let fut = async move {
4207                        let method = DictionaryLengthSvc(inner);
4208                        let codec = tonic::codec::ProstCodec::default();
4209                        let mut grpc = tonic::server::Grpc::new(codec)
4210                            .apply_compression_config(
4211                                accept_compression_encodings,
4212                                send_compression_encodings,
4213                            )
4214                            .apply_max_message_size_config(
4215                                max_decoding_message_size,
4216                                max_encoding_message_size,
4217                            );
4218                        let res = grpc.unary(method, req).await;
4219                        Ok(res)
4220                    };
4221                    Box::pin(fut)
4222                }
4223                "/cache_client.Scs/SetFetch" => {
4224                    #[allow(non_camel_case_types)]
4225                    struct SetFetchSvc<T: Scs>(pub Arc<T>);
4226                    impl<T: Scs> tonic::server::UnaryService<super::SetFetchRequest>
4227                    for SetFetchSvc<T> {
4228                        type Response = super::SetFetchResponse;
4229                        type Future = BoxFuture<
4230                            tonic::Response<Self::Response>,
4231                            tonic::Status,
4232                        >;
4233                        fn call(
4234                            &mut self,
4235                            request: tonic::Request<super::SetFetchRequest>,
4236                        ) -> Self::Future {
4237                            let inner = Arc::clone(&self.0);
4238                            let fut = async move {
4239                                <T as Scs>::set_fetch(&inner, request).await
4240                            };
4241                            Box::pin(fut)
4242                        }
4243                    }
4244                    let accept_compression_encodings = self.accept_compression_encodings;
4245                    let send_compression_encodings = self.send_compression_encodings;
4246                    let max_decoding_message_size = self.max_decoding_message_size;
4247                    let max_encoding_message_size = self.max_encoding_message_size;
4248                    let inner = self.inner.clone();
4249                    let fut = async move {
4250                        let method = SetFetchSvc(inner);
4251                        let codec = tonic::codec::ProstCodec::default();
4252                        let mut grpc = tonic::server::Grpc::new(codec)
4253                            .apply_compression_config(
4254                                accept_compression_encodings,
4255                                send_compression_encodings,
4256                            )
4257                            .apply_max_message_size_config(
4258                                max_decoding_message_size,
4259                                max_encoding_message_size,
4260                            );
4261                        let res = grpc.unary(method, req).await;
4262                        Ok(res)
4263                    };
4264                    Box::pin(fut)
4265                }
4266                "/cache_client.Scs/SetSample" => {
4267                    #[allow(non_camel_case_types)]
4268                    struct SetSampleSvc<T: Scs>(pub Arc<T>);
4269                    impl<T: Scs> tonic::server::UnaryService<super::SetSampleRequest>
4270                    for SetSampleSvc<T> {
4271                        type Response = super::SetSampleResponse;
4272                        type Future = BoxFuture<
4273                            tonic::Response<Self::Response>,
4274                            tonic::Status,
4275                        >;
4276                        fn call(
4277                            &mut self,
4278                            request: tonic::Request<super::SetSampleRequest>,
4279                        ) -> Self::Future {
4280                            let inner = Arc::clone(&self.0);
4281                            let fut = async move {
4282                                <T as Scs>::set_sample(&inner, request).await
4283                            };
4284                            Box::pin(fut)
4285                        }
4286                    }
4287                    let accept_compression_encodings = self.accept_compression_encodings;
4288                    let send_compression_encodings = self.send_compression_encodings;
4289                    let max_decoding_message_size = self.max_decoding_message_size;
4290                    let max_encoding_message_size = self.max_encoding_message_size;
4291                    let inner = self.inner.clone();
4292                    let fut = async move {
4293                        let method = SetSampleSvc(inner);
4294                        let codec = tonic::codec::ProstCodec::default();
4295                        let mut grpc = tonic::server::Grpc::new(codec)
4296                            .apply_compression_config(
4297                                accept_compression_encodings,
4298                                send_compression_encodings,
4299                            )
4300                            .apply_max_message_size_config(
4301                                max_decoding_message_size,
4302                                max_encoding_message_size,
4303                            );
4304                        let res = grpc.unary(method, req).await;
4305                        Ok(res)
4306                    };
4307                    Box::pin(fut)
4308                }
4309                "/cache_client.Scs/SetUnion" => {
4310                    #[allow(non_camel_case_types)]
4311                    struct SetUnionSvc<T: Scs>(pub Arc<T>);
4312                    impl<T: Scs> tonic::server::UnaryService<super::SetUnionRequest>
4313                    for SetUnionSvc<T> {
4314                        type Response = super::SetUnionResponse;
4315                        type Future = BoxFuture<
4316                            tonic::Response<Self::Response>,
4317                            tonic::Status,
4318                        >;
4319                        fn call(
4320                            &mut self,
4321                            request: tonic::Request<super::SetUnionRequest>,
4322                        ) -> Self::Future {
4323                            let inner = Arc::clone(&self.0);
4324                            let fut = async move {
4325                                <T as Scs>::set_union(&inner, request).await
4326                            };
4327                            Box::pin(fut)
4328                        }
4329                    }
4330                    let accept_compression_encodings = self.accept_compression_encodings;
4331                    let send_compression_encodings = self.send_compression_encodings;
4332                    let max_decoding_message_size = self.max_decoding_message_size;
4333                    let max_encoding_message_size = self.max_encoding_message_size;
4334                    let inner = self.inner.clone();
4335                    let fut = async move {
4336                        let method = SetUnionSvc(inner);
4337                        let codec = tonic::codec::ProstCodec::default();
4338                        let mut grpc = tonic::server::Grpc::new(codec)
4339                            .apply_compression_config(
4340                                accept_compression_encodings,
4341                                send_compression_encodings,
4342                            )
4343                            .apply_max_message_size_config(
4344                                max_decoding_message_size,
4345                                max_encoding_message_size,
4346                            );
4347                        let res = grpc.unary(method, req).await;
4348                        Ok(res)
4349                    };
4350                    Box::pin(fut)
4351                }
4352                "/cache_client.Scs/SetDifference" => {
4353                    #[allow(non_camel_case_types)]
4354                    struct SetDifferenceSvc<T: Scs>(pub Arc<T>);
4355                    impl<T: Scs> tonic::server::UnaryService<super::SetDifferenceRequest>
4356                    for SetDifferenceSvc<T> {
4357                        type Response = super::SetDifferenceResponse;
4358                        type Future = BoxFuture<
4359                            tonic::Response<Self::Response>,
4360                            tonic::Status,
4361                        >;
4362                        fn call(
4363                            &mut self,
4364                            request: tonic::Request<super::SetDifferenceRequest>,
4365                        ) -> Self::Future {
4366                            let inner = Arc::clone(&self.0);
4367                            let fut = async move {
4368                                <T as Scs>::set_difference(&inner, request).await
4369                            };
4370                            Box::pin(fut)
4371                        }
4372                    }
4373                    let accept_compression_encodings = self.accept_compression_encodings;
4374                    let send_compression_encodings = self.send_compression_encodings;
4375                    let max_decoding_message_size = self.max_decoding_message_size;
4376                    let max_encoding_message_size = self.max_encoding_message_size;
4377                    let inner = self.inner.clone();
4378                    let fut = async move {
4379                        let method = SetDifferenceSvc(inner);
4380                        let codec = tonic::codec::ProstCodec::default();
4381                        let mut grpc = tonic::server::Grpc::new(codec)
4382                            .apply_compression_config(
4383                                accept_compression_encodings,
4384                                send_compression_encodings,
4385                            )
4386                            .apply_max_message_size_config(
4387                                max_decoding_message_size,
4388                                max_encoding_message_size,
4389                            );
4390                        let res = grpc.unary(method, req).await;
4391                        Ok(res)
4392                    };
4393                    Box::pin(fut)
4394                }
4395                "/cache_client.Scs/SetContains" => {
4396                    #[allow(non_camel_case_types)]
4397                    struct SetContainsSvc<T: Scs>(pub Arc<T>);
4398                    impl<T: Scs> tonic::server::UnaryService<super::SetContainsRequest>
4399                    for SetContainsSvc<T> {
4400                        type Response = super::SetContainsResponse;
4401                        type Future = BoxFuture<
4402                            tonic::Response<Self::Response>,
4403                            tonic::Status,
4404                        >;
4405                        fn call(
4406                            &mut self,
4407                            request: tonic::Request<super::SetContainsRequest>,
4408                        ) -> Self::Future {
4409                            let inner = Arc::clone(&self.0);
4410                            let fut = async move {
4411                                <T as Scs>::set_contains(&inner, request).await
4412                            };
4413                            Box::pin(fut)
4414                        }
4415                    }
4416                    let accept_compression_encodings = self.accept_compression_encodings;
4417                    let send_compression_encodings = self.send_compression_encodings;
4418                    let max_decoding_message_size = self.max_decoding_message_size;
4419                    let max_encoding_message_size = self.max_encoding_message_size;
4420                    let inner = self.inner.clone();
4421                    let fut = async move {
4422                        let method = SetContainsSvc(inner);
4423                        let codec = tonic::codec::ProstCodec::default();
4424                        let mut grpc = tonic::server::Grpc::new(codec)
4425                            .apply_compression_config(
4426                                accept_compression_encodings,
4427                                send_compression_encodings,
4428                            )
4429                            .apply_max_message_size_config(
4430                                max_decoding_message_size,
4431                                max_encoding_message_size,
4432                            );
4433                        let res = grpc.unary(method, req).await;
4434                        Ok(res)
4435                    };
4436                    Box::pin(fut)
4437                }
4438                "/cache_client.Scs/SetLength" => {
4439                    #[allow(non_camel_case_types)]
4440                    struct SetLengthSvc<T: Scs>(pub Arc<T>);
4441                    impl<T: Scs> tonic::server::UnaryService<super::SetLengthRequest>
4442                    for SetLengthSvc<T> {
4443                        type Response = super::SetLengthResponse;
4444                        type Future = BoxFuture<
4445                            tonic::Response<Self::Response>,
4446                            tonic::Status,
4447                        >;
4448                        fn call(
4449                            &mut self,
4450                            request: tonic::Request<super::SetLengthRequest>,
4451                        ) -> Self::Future {
4452                            let inner = Arc::clone(&self.0);
4453                            let fut = async move {
4454                                <T as Scs>::set_length(&inner, request).await
4455                            };
4456                            Box::pin(fut)
4457                        }
4458                    }
4459                    let accept_compression_encodings = self.accept_compression_encodings;
4460                    let send_compression_encodings = self.send_compression_encodings;
4461                    let max_decoding_message_size = self.max_decoding_message_size;
4462                    let max_encoding_message_size = self.max_encoding_message_size;
4463                    let inner = self.inner.clone();
4464                    let fut = async move {
4465                        let method = SetLengthSvc(inner);
4466                        let codec = tonic::codec::ProstCodec::default();
4467                        let mut grpc = tonic::server::Grpc::new(codec)
4468                            .apply_compression_config(
4469                                accept_compression_encodings,
4470                                send_compression_encodings,
4471                            )
4472                            .apply_max_message_size_config(
4473                                max_decoding_message_size,
4474                                max_encoding_message_size,
4475                            );
4476                        let res = grpc.unary(method, req).await;
4477                        Ok(res)
4478                    };
4479                    Box::pin(fut)
4480                }
4481                "/cache_client.Scs/SetPop" => {
4482                    #[allow(non_camel_case_types)]
4483                    struct SetPopSvc<T: Scs>(pub Arc<T>);
4484                    impl<T: Scs> tonic::server::UnaryService<super::SetPopRequest>
4485                    for SetPopSvc<T> {
4486                        type Response = super::SetPopResponse;
4487                        type Future = BoxFuture<
4488                            tonic::Response<Self::Response>,
4489                            tonic::Status,
4490                        >;
4491                        fn call(
4492                            &mut self,
4493                            request: tonic::Request<super::SetPopRequest>,
4494                        ) -> Self::Future {
4495                            let inner = Arc::clone(&self.0);
4496                            let fut = async move {
4497                                <T as Scs>::set_pop(&inner, request).await
4498                            };
4499                            Box::pin(fut)
4500                        }
4501                    }
4502                    let accept_compression_encodings = self.accept_compression_encodings;
4503                    let send_compression_encodings = self.send_compression_encodings;
4504                    let max_decoding_message_size = self.max_decoding_message_size;
4505                    let max_encoding_message_size = self.max_encoding_message_size;
4506                    let inner = self.inner.clone();
4507                    let fut = async move {
4508                        let method = SetPopSvc(inner);
4509                        let codec = tonic::codec::ProstCodec::default();
4510                        let mut grpc = tonic::server::Grpc::new(codec)
4511                            .apply_compression_config(
4512                                accept_compression_encodings,
4513                                send_compression_encodings,
4514                            )
4515                            .apply_max_message_size_config(
4516                                max_decoding_message_size,
4517                                max_encoding_message_size,
4518                            );
4519                        let res = grpc.unary(method, req).await;
4520                        Ok(res)
4521                    };
4522                    Box::pin(fut)
4523                }
4524                "/cache_client.Scs/ListPushFront" => {
4525                    #[allow(non_camel_case_types)]
4526                    struct ListPushFrontSvc<T: Scs>(pub Arc<T>);
4527                    impl<T: Scs> tonic::server::UnaryService<super::ListPushFrontRequest>
4528                    for ListPushFrontSvc<T> {
4529                        type Response = super::ListPushFrontResponse;
4530                        type Future = BoxFuture<
4531                            tonic::Response<Self::Response>,
4532                            tonic::Status,
4533                        >;
4534                        fn call(
4535                            &mut self,
4536                            request: tonic::Request<super::ListPushFrontRequest>,
4537                        ) -> Self::Future {
4538                            let inner = Arc::clone(&self.0);
4539                            let fut = async move {
4540                                <T as Scs>::list_push_front(&inner, request).await
4541                            };
4542                            Box::pin(fut)
4543                        }
4544                    }
4545                    let accept_compression_encodings = self.accept_compression_encodings;
4546                    let send_compression_encodings = self.send_compression_encodings;
4547                    let max_decoding_message_size = self.max_decoding_message_size;
4548                    let max_encoding_message_size = self.max_encoding_message_size;
4549                    let inner = self.inner.clone();
4550                    let fut = async move {
4551                        let method = ListPushFrontSvc(inner);
4552                        let codec = tonic::codec::ProstCodec::default();
4553                        let mut grpc = tonic::server::Grpc::new(codec)
4554                            .apply_compression_config(
4555                                accept_compression_encodings,
4556                                send_compression_encodings,
4557                            )
4558                            .apply_max_message_size_config(
4559                                max_decoding_message_size,
4560                                max_encoding_message_size,
4561                            );
4562                        let res = grpc.unary(method, req).await;
4563                        Ok(res)
4564                    };
4565                    Box::pin(fut)
4566                }
4567                "/cache_client.Scs/ListPushBack" => {
4568                    #[allow(non_camel_case_types)]
4569                    struct ListPushBackSvc<T: Scs>(pub Arc<T>);
4570                    impl<T: Scs> tonic::server::UnaryService<super::ListPushBackRequest>
4571                    for ListPushBackSvc<T> {
4572                        type Response = super::ListPushBackResponse;
4573                        type Future = BoxFuture<
4574                            tonic::Response<Self::Response>,
4575                            tonic::Status,
4576                        >;
4577                        fn call(
4578                            &mut self,
4579                            request: tonic::Request<super::ListPushBackRequest>,
4580                        ) -> Self::Future {
4581                            let inner = Arc::clone(&self.0);
4582                            let fut = async move {
4583                                <T as Scs>::list_push_back(&inner, request).await
4584                            };
4585                            Box::pin(fut)
4586                        }
4587                    }
4588                    let accept_compression_encodings = self.accept_compression_encodings;
4589                    let send_compression_encodings = self.send_compression_encodings;
4590                    let max_decoding_message_size = self.max_decoding_message_size;
4591                    let max_encoding_message_size = self.max_encoding_message_size;
4592                    let inner = self.inner.clone();
4593                    let fut = async move {
4594                        let method = ListPushBackSvc(inner);
4595                        let codec = tonic::codec::ProstCodec::default();
4596                        let mut grpc = tonic::server::Grpc::new(codec)
4597                            .apply_compression_config(
4598                                accept_compression_encodings,
4599                                send_compression_encodings,
4600                            )
4601                            .apply_max_message_size_config(
4602                                max_decoding_message_size,
4603                                max_encoding_message_size,
4604                            );
4605                        let res = grpc.unary(method, req).await;
4606                        Ok(res)
4607                    };
4608                    Box::pin(fut)
4609                }
4610                "/cache_client.Scs/ListPopFront" => {
4611                    #[allow(non_camel_case_types)]
4612                    struct ListPopFrontSvc<T: Scs>(pub Arc<T>);
4613                    impl<T: Scs> tonic::server::UnaryService<super::ListPopFrontRequest>
4614                    for ListPopFrontSvc<T> {
4615                        type Response = super::ListPopFrontResponse;
4616                        type Future = BoxFuture<
4617                            tonic::Response<Self::Response>,
4618                            tonic::Status,
4619                        >;
4620                        fn call(
4621                            &mut self,
4622                            request: tonic::Request<super::ListPopFrontRequest>,
4623                        ) -> Self::Future {
4624                            let inner = Arc::clone(&self.0);
4625                            let fut = async move {
4626                                <T as Scs>::list_pop_front(&inner, request).await
4627                            };
4628                            Box::pin(fut)
4629                        }
4630                    }
4631                    let accept_compression_encodings = self.accept_compression_encodings;
4632                    let send_compression_encodings = self.send_compression_encodings;
4633                    let max_decoding_message_size = self.max_decoding_message_size;
4634                    let max_encoding_message_size = self.max_encoding_message_size;
4635                    let inner = self.inner.clone();
4636                    let fut = async move {
4637                        let method = ListPopFrontSvc(inner);
4638                        let codec = tonic::codec::ProstCodec::default();
4639                        let mut grpc = tonic::server::Grpc::new(codec)
4640                            .apply_compression_config(
4641                                accept_compression_encodings,
4642                                send_compression_encodings,
4643                            )
4644                            .apply_max_message_size_config(
4645                                max_decoding_message_size,
4646                                max_encoding_message_size,
4647                            );
4648                        let res = grpc.unary(method, req).await;
4649                        Ok(res)
4650                    };
4651                    Box::pin(fut)
4652                }
4653                "/cache_client.Scs/ListPopBack" => {
4654                    #[allow(non_camel_case_types)]
4655                    struct ListPopBackSvc<T: Scs>(pub Arc<T>);
4656                    impl<T: Scs> tonic::server::UnaryService<super::ListPopBackRequest>
4657                    for ListPopBackSvc<T> {
4658                        type Response = super::ListPopBackResponse;
4659                        type Future = BoxFuture<
4660                            tonic::Response<Self::Response>,
4661                            tonic::Status,
4662                        >;
4663                        fn call(
4664                            &mut self,
4665                            request: tonic::Request<super::ListPopBackRequest>,
4666                        ) -> Self::Future {
4667                            let inner = Arc::clone(&self.0);
4668                            let fut = async move {
4669                                <T as Scs>::list_pop_back(&inner, request).await
4670                            };
4671                            Box::pin(fut)
4672                        }
4673                    }
4674                    let accept_compression_encodings = self.accept_compression_encodings;
4675                    let send_compression_encodings = self.send_compression_encodings;
4676                    let max_decoding_message_size = self.max_decoding_message_size;
4677                    let max_encoding_message_size = self.max_encoding_message_size;
4678                    let inner = self.inner.clone();
4679                    let fut = async move {
4680                        let method = ListPopBackSvc(inner);
4681                        let codec = tonic::codec::ProstCodec::default();
4682                        let mut grpc = tonic::server::Grpc::new(codec)
4683                            .apply_compression_config(
4684                                accept_compression_encodings,
4685                                send_compression_encodings,
4686                            )
4687                            .apply_max_message_size_config(
4688                                max_decoding_message_size,
4689                                max_encoding_message_size,
4690                            );
4691                        let res = grpc.unary(method, req).await;
4692                        Ok(res)
4693                    };
4694                    Box::pin(fut)
4695                }
4696                "/cache_client.Scs/ListErase" => {
4697                    #[allow(non_camel_case_types)]
4698                    struct ListEraseSvc<T: Scs>(pub Arc<T>);
4699                    impl<T: Scs> tonic::server::UnaryService<super::ListEraseRequest>
4700                    for ListEraseSvc<T> {
4701                        type Response = super::ListEraseResponse;
4702                        type Future = BoxFuture<
4703                            tonic::Response<Self::Response>,
4704                            tonic::Status,
4705                        >;
4706                        fn call(
4707                            &mut self,
4708                            request: tonic::Request<super::ListEraseRequest>,
4709                        ) -> Self::Future {
4710                            let inner = Arc::clone(&self.0);
4711                            let fut = async move {
4712                                <T as Scs>::list_erase(&inner, request).await
4713                            };
4714                            Box::pin(fut)
4715                        }
4716                    }
4717                    let accept_compression_encodings = self.accept_compression_encodings;
4718                    let send_compression_encodings = self.send_compression_encodings;
4719                    let max_decoding_message_size = self.max_decoding_message_size;
4720                    let max_encoding_message_size = self.max_encoding_message_size;
4721                    let inner = self.inner.clone();
4722                    let fut = async move {
4723                        let method = ListEraseSvc(inner);
4724                        let codec = tonic::codec::ProstCodec::default();
4725                        let mut grpc = tonic::server::Grpc::new(codec)
4726                            .apply_compression_config(
4727                                accept_compression_encodings,
4728                                send_compression_encodings,
4729                            )
4730                            .apply_max_message_size_config(
4731                                max_decoding_message_size,
4732                                max_encoding_message_size,
4733                            );
4734                        let res = grpc.unary(method, req).await;
4735                        Ok(res)
4736                    };
4737                    Box::pin(fut)
4738                }
4739                "/cache_client.Scs/ListRemove" => {
4740                    #[allow(non_camel_case_types)]
4741                    struct ListRemoveSvc<T: Scs>(pub Arc<T>);
4742                    impl<T: Scs> tonic::server::UnaryService<super::ListRemoveRequest>
4743                    for ListRemoveSvc<T> {
4744                        type Response = super::ListRemoveResponse;
4745                        type Future = BoxFuture<
4746                            tonic::Response<Self::Response>,
4747                            tonic::Status,
4748                        >;
4749                        fn call(
4750                            &mut self,
4751                            request: tonic::Request<super::ListRemoveRequest>,
4752                        ) -> Self::Future {
4753                            let inner = Arc::clone(&self.0);
4754                            let fut = async move {
4755                                <T as Scs>::list_remove(&inner, request).await
4756                            };
4757                            Box::pin(fut)
4758                        }
4759                    }
4760                    let accept_compression_encodings = self.accept_compression_encodings;
4761                    let send_compression_encodings = self.send_compression_encodings;
4762                    let max_decoding_message_size = self.max_decoding_message_size;
4763                    let max_encoding_message_size = self.max_encoding_message_size;
4764                    let inner = self.inner.clone();
4765                    let fut = async move {
4766                        let method = ListRemoveSvc(inner);
4767                        let codec = tonic::codec::ProstCodec::default();
4768                        let mut grpc = tonic::server::Grpc::new(codec)
4769                            .apply_compression_config(
4770                                accept_compression_encodings,
4771                                send_compression_encodings,
4772                            )
4773                            .apply_max_message_size_config(
4774                                max_decoding_message_size,
4775                                max_encoding_message_size,
4776                            );
4777                        let res = grpc.unary(method, req).await;
4778                        Ok(res)
4779                    };
4780                    Box::pin(fut)
4781                }
4782                "/cache_client.Scs/ListFetch" => {
4783                    #[allow(non_camel_case_types)]
4784                    struct ListFetchSvc<T: Scs>(pub Arc<T>);
4785                    impl<T: Scs> tonic::server::UnaryService<super::ListFetchRequest>
4786                    for ListFetchSvc<T> {
4787                        type Response = super::ListFetchResponse;
4788                        type Future = BoxFuture<
4789                            tonic::Response<Self::Response>,
4790                            tonic::Status,
4791                        >;
4792                        fn call(
4793                            &mut self,
4794                            request: tonic::Request<super::ListFetchRequest>,
4795                        ) -> Self::Future {
4796                            let inner = Arc::clone(&self.0);
4797                            let fut = async move {
4798                                <T as Scs>::list_fetch(&inner, request).await
4799                            };
4800                            Box::pin(fut)
4801                        }
4802                    }
4803                    let accept_compression_encodings = self.accept_compression_encodings;
4804                    let send_compression_encodings = self.send_compression_encodings;
4805                    let max_decoding_message_size = self.max_decoding_message_size;
4806                    let max_encoding_message_size = self.max_encoding_message_size;
4807                    let inner = self.inner.clone();
4808                    let fut = async move {
4809                        let method = ListFetchSvc(inner);
4810                        let codec = tonic::codec::ProstCodec::default();
4811                        let mut grpc = tonic::server::Grpc::new(codec)
4812                            .apply_compression_config(
4813                                accept_compression_encodings,
4814                                send_compression_encodings,
4815                            )
4816                            .apply_max_message_size_config(
4817                                max_decoding_message_size,
4818                                max_encoding_message_size,
4819                            );
4820                        let res = grpc.unary(method, req).await;
4821                        Ok(res)
4822                    };
4823                    Box::pin(fut)
4824                }
4825                "/cache_client.Scs/ListLength" => {
4826                    #[allow(non_camel_case_types)]
4827                    struct ListLengthSvc<T: Scs>(pub Arc<T>);
4828                    impl<T: Scs> tonic::server::UnaryService<super::ListLengthRequest>
4829                    for ListLengthSvc<T> {
4830                        type Response = super::ListLengthResponse;
4831                        type Future = BoxFuture<
4832                            tonic::Response<Self::Response>,
4833                            tonic::Status,
4834                        >;
4835                        fn call(
4836                            &mut self,
4837                            request: tonic::Request<super::ListLengthRequest>,
4838                        ) -> Self::Future {
4839                            let inner = Arc::clone(&self.0);
4840                            let fut = async move {
4841                                <T as Scs>::list_length(&inner, request).await
4842                            };
4843                            Box::pin(fut)
4844                        }
4845                    }
4846                    let accept_compression_encodings = self.accept_compression_encodings;
4847                    let send_compression_encodings = self.send_compression_encodings;
4848                    let max_decoding_message_size = self.max_decoding_message_size;
4849                    let max_encoding_message_size = self.max_encoding_message_size;
4850                    let inner = self.inner.clone();
4851                    let fut = async move {
4852                        let method = ListLengthSvc(inner);
4853                        let codec = tonic::codec::ProstCodec::default();
4854                        let mut grpc = tonic::server::Grpc::new(codec)
4855                            .apply_compression_config(
4856                                accept_compression_encodings,
4857                                send_compression_encodings,
4858                            )
4859                            .apply_max_message_size_config(
4860                                max_decoding_message_size,
4861                                max_encoding_message_size,
4862                            );
4863                        let res = grpc.unary(method, req).await;
4864                        Ok(res)
4865                    };
4866                    Box::pin(fut)
4867                }
4868                "/cache_client.Scs/ListConcatenateFront" => {
4869                    #[allow(non_camel_case_types)]
4870                    struct ListConcatenateFrontSvc<T: Scs>(pub Arc<T>);
4871                    impl<
4872                        T: Scs,
4873                    > tonic::server::UnaryService<super::ListConcatenateFrontRequest>
4874                    for ListConcatenateFrontSvc<T> {
4875                        type Response = super::ListConcatenateFrontResponse;
4876                        type Future = BoxFuture<
4877                            tonic::Response<Self::Response>,
4878                            tonic::Status,
4879                        >;
4880                        fn call(
4881                            &mut self,
4882                            request: tonic::Request<super::ListConcatenateFrontRequest>,
4883                        ) -> Self::Future {
4884                            let inner = Arc::clone(&self.0);
4885                            let fut = async move {
4886                                <T as Scs>::list_concatenate_front(&inner, request).await
4887                            };
4888                            Box::pin(fut)
4889                        }
4890                    }
4891                    let accept_compression_encodings = self.accept_compression_encodings;
4892                    let send_compression_encodings = self.send_compression_encodings;
4893                    let max_decoding_message_size = self.max_decoding_message_size;
4894                    let max_encoding_message_size = self.max_encoding_message_size;
4895                    let inner = self.inner.clone();
4896                    let fut = async move {
4897                        let method = ListConcatenateFrontSvc(inner);
4898                        let codec = tonic::codec::ProstCodec::default();
4899                        let mut grpc = tonic::server::Grpc::new(codec)
4900                            .apply_compression_config(
4901                                accept_compression_encodings,
4902                                send_compression_encodings,
4903                            )
4904                            .apply_max_message_size_config(
4905                                max_decoding_message_size,
4906                                max_encoding_message_size,
4907                            );
4908                        let res = grpc.unary(method, req).await;
4909                        Ok(res)
4910                    };
4911                    Box::pin(fut)
4912                }
4913                "/cache_client.Scs/ListConcatenateBack" => {
4914                    #[allow(non_camel_case_types)]
4915                    struct ListConcatenateBackSvc<T: Scs>(pub Arc<T>);
4916                    impl<
4917                        T: Scs,
4918                    > tonic::server::UnaryService<super::ListConcatenateBackRequest>
4919                    for ListConcatenateBackSvc<T> {
4920                        type Response = super::ListConcatenateBackResponse;
4921                        type Future = BoxFuture<
4922                            tonic::Response<Self::Response>,
4923                            tonic::Status,
4924                        >;
4925                        fn call(
4926                            &mut self,
4927                            request: tonic::Request<super::ListConcatenateBackRequest>,
4928                        ) -> Self::Future {
4929                            let inner = Arc::clone(&self.0);
4930                            let fut = async move {
4931                                <T as Scs>::list_concatenate_back(&inner, request).await
4932                            };
4933                            Box::pin(fut)
4934                        }
4935                    }
4936                    let accept_compression_encodings = self.accept_compression_encodings;
4937                    let send_compression_encodings = self.send_compression_encodings;
4938                    let max_decoding_message_size = self.max_decoding_message_size;
4939                    let max_encoding_message_size = self.max_encoding_message_size;
4940                    let inner = self.inner.clone();
4941                    let fut = async move {
4942                        let method = ListConcatenateBackSvc(inner);
4943                        let codec = tonic::codec::ProstCodec::default();
4944                        let mut grpc = tonic::server::Grpc::new(codec)
4945                            .apply_compression_config(
4946                                accept_compression_encodings,
4947                                send_compression_encodings,
4948                            )
4949                            .apply_max_message_size_config(
4950                                max_decoding_message_size,
4951                                max_encoding_message_size,
4952                            );
4953                        let res = grpc.unary(method, req).await;
4954                        Ok(res)
4955                    };
4956                    Box::pin(fut)
4957                }
4958                "/cache_client.Scs/ListRetain" => {
4959                    #[allow(non_camel_case_types)]
4960                    struct ListRetainSvc<T: Scs>(pub Arc<T>);
4961                    impl<T: Scs> tonic::server::UnaryService<super::ListRetainRequest>
4962                    for ListRetainSvc<T> {
4963                        type Response = super::ListRetainResponse;
4964                        type Future = BoxFuture<
4965                            tonic::Response<Self::Response>,
4966                            tonic::Status,
4967                        >;
4968                        fn call(
4969                            &mut self,
4970                            request: tonic::Request<super::ListRetainRequest>,
4971                        ) -> Self::Future {
4972                            let inner = Arc::clone(&self.0);
4973                            let fut = async move {
4974                                <T as Scs>::list_retain(&inner, request).await
4975                            };
4976                            Box::pin(fut)
4977                        }
4978                    }
4979                    let accept_compression_encodings = self.accept_compression_encodings;
4980                    let send_compression_encodings = self.send_compression_encodings;
4981                    let max_decoding_message_size = self.max_decoding_message_size;
4982                    let max_encoding_message_size = self.max_encoding_message_size;
4983                    let inner = self.inner.clone();
4984                    let fut = async move {
4985                        let method = ListRetainSvc(inner);
4986                        let codec = tonic::codec::ProstCodec::default();
4987                        let mut grpc = tonic::server::Grpc::new(codec)
4988                            .apply_compression_config(
4989                                accept_compression_encodings,
4990                                send_compression_encodings,
4991                            )
4992                            .apply_max_message_size_config(
4993                                max_decoding_message_size,
4994                                max_encoding_message_size,
4995                            );
4996                        let res = grpc.unary(method, req).await;
4997                        Ok(res)
4998                    };
4999                    Box::pin(fut)
5000                }
5001                "/cache_client.Scs/SortedSetPut" => {
5002                    #[allow(non_camel_case_types)]
5003                    struct SortedSetPutSvc<T: Scs>(pub Arc<T>);
5004                    impl<T: Scs> tonic::server::UnaryService<super::SortedSetPutRequest>
5005                    for SortedSetPutSvc<T> {
5006                        type Response = super::SortedSetPutResponse;
5007                        type Future = BoxFuture<
5008                            tonic::Response<Self::Response>,
5009                            tonic::Status,
5010                        >;
5011                        fn call(
5012                            &mut self,
5013                            request: tonic::Request<super::SortedSetPutRequest>,
5014                        ) -> Self::Future {
5015                            let inner = Arc::clone(&self.0);
5016                            let fut = async move {
5017                                <T as Scs>::sorted_set_put(&inner, request).await
5018                            };
5019                            Box::pin(fut)
5020                        }
5021                    }
5022                    let accept_compression_encodings = self.accept_compression_encodings;
5023                    let send_compression_encodings = self.send_compression_encodings;
5024                    let max_decoding_message_size = self.max_decoding_message_size;
5025                    let max_encoding_message_size = self.max_encoding_message_size;
5026                    let inner = self.inner.clone();
5027                    let fut = async move {
5028                        let method = SortedSetPutSvc(inner);
5029                        let codec = tonic::codec::ProstCodec::default();
5030                        let mut grpc = tonic::server::Grpc::new(codec)
5031                            .apply_compression_config(
5032                                accept_compression_encodings,
5033                                send_compression_encodings,
5034                            )
5035                            .apply_max_message_size_config(
5036                                max_decoding_message_size,
5037                                max_encoding_message_size,
5038                            );
5039                        let res = grpc.unary(method, req).await;
5040                        Ok(res)
5041                    };
5042                    Box::pin(fut)
5043                }
5044                "/cache_client.Scs/SortedSetFetch" => {
5045                    #[allow(non_camel_case_types)]
5046                    struct SortedSetFetchSvc<T: Scs>(pub Arc<T>);
5047                    impl<
5048                        T: Scs,
5049                    > tonic::server::UnaryService<super::SortedSetFetchRequest>
5050                    for SortedSetFetchSvc<T> {
5051                        type Response = super::SortedSetFetchResponse;
5052                        type Future = BoxFuture<
5053                            tonic::Response<Self::Response>,
5054                            tonic::Status,
5055                        >;
5056                        fn call(
5057                            &mut self,
5058                            request: tonic::Request<super::SortedSetFetchRequest>,
5059                        ) -> Self::Future {
5060                            let inner = Arc::clone(&self.0);
5061                            let fut = async move {
5062                                <T as Scs>::sorted_set_fetch(&inner, request).await
5063                            };
5064                            Box::pin(fut)
5065                        }
5066                    }
5067                    let accept_compression_encodings = self.accept_compression_encodings;
5068                    let send_compression_encodings = self.send_compression_encodings;
5069                    let max_decoding_message_size = self.max_decoding_message_size;
5070                    let max_encoding_message_size = self.max_encoding_message_size;
5071                    let inner = self.inner.clone();
5072                    let fut = async move {
5073                        let method = SortedSetFetchSvc(inner);
5074                        let codec = tonic::codec::ProstCodec::default();
5075                        let mut grpc = tonic::server::Grpc::new(codec)
5076                            .apply_compression_config(
5077                                accept_compression_encodings,
5078                                send_compression_encodings,
5079                            )
5080                            .apply_max_message_size_config(
5081                                max_decoding_message_size,
5082                                max_encoding_message_size,
5083                            );
5084                        let res = grpc.unary(method, req).await;
5085                        Ok(res)
5086                    };
5087                    Box::pin(fut)
5088                }
5089                "/cache_client.Scs/SortedSetGetScore" => {
5090                    #[allow(non_camel_case_types)]
5091                    struct SortedSetGetScoreSvc<T: Scs>(pub Arc<T>);
5092                    impl<
5093                        T: Scs,
5094                    > tonic::server::UnaryService<super::SortedSetGetScoreRequest>
5095                    for SortedSetGetScoreSvc<T> {
5096                        type Response = super::SortedSetGetScoreResponse;
5097                        type Future = BoxFuture<
5098                            tonic::Response<Self::Response>,
5099                            tonic::Status,
5100                        >;
5101                        fn call(
5102                            &mut self,
5103                            request: tonic::Request<super::SortedSetGetScoreRequest>,
5104                        ) -> Self::Future {
5105                            let inner = Arc::clone(&self.0);
5106                            let fut = async move {
5107                                <T as Scs>::sorted_set_get_score(&inner, request).await
5108                            };
5109                            Box::pin(fut)
5110                        }
5111                    }
5112                    let accept_compression_encodings = self.accept_compression_encodings;
5113                    let send_compression_encodings = self.send_compression_encodings;
5114                    let max_decoding_message_size = self.max_decoding_message_size;
5115                    let max_encoding_message_size = self.max_encoding_message_size;
5116                    let inner = self.inner.clone();
5117                    let fut = async move {
5118                        let method = SortedSetGetScoreSvc(inner);
5119                        let codec = tonic::codec::ProstCodec::default();
5120                        let mut grpc = tonic::server::Grpc::new(codec)
5121                            .apply_compression_config(
5122                                accept_compression_encodings,
5123                                send_compression_encodings,
5124                            )
5125                            .apply_max_message_size_config(
5126                                max_decoding_message_size,
5127                                max_encoding_message_size,
5128                            );
5129                        let res = grpc.unary(method, req).await;
5130                        Ok(res)
5131                    };
5132                    Box::pin(fut)
5133                }
5134                "/cache_client.Scs/SortedSetRemove" => {
5135                    #[allow(non_camel_case_types)]
5136                    struct SortedSetRemoveSvc<T: Scs>(pub Arc<T>);
5137                    impl<
5138                        T: Scs,
5139                    > tonic::server::UnaryService<super::SortedSetRemoveRequest>
5140                    for SortedSetRemoveSvc<T> {
5141                        type Response = super::SortedSetRemoveResponse;
5142                        type Future = BoxFuture<
5143                            tonic::Response<Self::Response>,
5144                            tonic::Status,
5145                        >;
5146                        fn call(
5147                            &mut self,
5148                            request: tonic::Request<super::SortedSetRemoveRequest>,
5149                        ) -> Self::Future {
5150                            let inner = Arc::clone(&self.0);
5151                            let fut = async move {
5152                                <T as Scs>::sorted_set_remove(&inner, request).await
5153                            };
5154                            Box::pin(fut)
5155                        }
5156                    }
5157                    let accept_compression_encodings = self.accept_compression_encodings;
5158                    let send_compression_encodings = self.send_compression_encodings;
5159                    let max_decoding_message_size = self.max_decoding_message_size;
5160                    let max_encoding_message_size = self.max_encoding_message_size;
5161                    let inner = self.inner.clone();
5162                    let fut = async move {
5163                        let method = SortedSetRemoveSvc(inner);
5164                        let codec = tonic::codec::ProstCodec::default();
5165                        let mut grpc = tonic::server::Grpc::new(codec)
5166                            .apply_compression_config(
5167                                accept_compression_encodings,
5168                                send_compression_encodings,
5169                            )
5170                            .apply_max_message_size_config(
5171                                max_decoding_message_size,
5172                                max_encoding_message_size,
5173                            );
5174                        let res = grpc.unary(method, req).await;
5175                        Ok(res)
5176                    };
5177                    Box::pin(fut)
5178                }
5179                "/cache_client.Scs/SortedSetIncrement" => {
5180                    #[allow(non_camel_case_types)]
5181                    struct SortedSetIncrementSvc<T: Scs>(pub Arc<T>);
5182                    impl<
5183                        T: Scs,
5184                    > tonic::server::UnaryService<super::SortedSetIncrementRequest>
5185                    for SortedSetIncrementSvc<T> {
5186                        type Response = super::SortedSetIncrementResponse;
5187                        type Future = BoxFuture<
5188                            tonic::Response<Self::Response>,
5189                            tonic::Status,
5190                        >;
5191                        fn call(
5192                            &mut self,
5193                            request: tonic::Request<super::SortedSetIncrementRequest>,
5194                        ) -> Self::Future {
5195                            let inner = Arc::clone(&self.0);
5196                            let fut = async move {
5197                                <T as Scs>::sorted_set_increment(&inner, request).await
5198                            };
5199                            Box::pin(fut)
5200                        }
5201                    }
5202                    let accept_compression_encodings = self.accept_compression_encodings;
5203                    let send_compression_encodings = self.send_compression_encodings;
5204                    let max_decoding_message_size = self.max_decoding_message_size;
5205                    let max_encoding_message_size = self.max_encoding_message_size;
5206                    let inner = self.inner.clone();
5207                    let fut = async move {
5208                        let method = SortedSetIncrementSvc(inner);
5209                        let codec = tonic::codec::ProstCodec::default();
5210                        let mut grpc = tonic::server::Grpc::new(codec)
5211                            .apply_compression_config(
5212                                accept_compression_encodings,
5213                                send_compression_encodings,
5214                            )
5215                            .apply_max_message_size_config(
5216                                max_decoding_message_size,
5217                                max_encoding_message_size,
5218                            );
5219                        let res = grpc.unary(method, req).await;
5220                        Ok(res)
5221                    };
5222                    Box::pin(fut)
5223                }
5224                "/cache_client.Scs/SortedSetGetRank" => {
5225                    #[allow(non_camel_case_types)]
5226                    struct SortedSetGetRankSvc<T: Scs>(pub Arc<T>);
5227                    impl<
5228                        T: Scs,
5229                    > tonic::server::UnaryService<super::SortedSetGetRankRequest>
5230                    for SortedSetGetRankSvc<T> {
5231                        type Response = super::SortedSetGetRankResponse;
5232                        type Future = BoxFuture<
5233                            tonic::Response<Self::Response>,
5234                            tonic::Status,
5235                        >;
5236                        fn call(
5237                            &mut self,
5238                            request: tonic::Request<super::SortedSetGetRankRequest>,
5239                        ) -> Self::Future {
5240                            let inner = Arc::clone(&self.0);
5241                            let fut = async move {
5242                                <T as Scs>::sorted_set_get_rank(&inner, request).await
5243                            };
5244                            Box::pin(fut)
5245                        }
5246                    }
5247                    let accept_compression_encodings = self.accept_compression_encodings;
5248                    let send_compression_encodings = self.send_compression_encodings;
5249                    let max_decoding_message_size = self.max_decoding_message_size;
5250                    let max_encoding_message_size = self.max_encoding_message_size;
5251                    let inner = self.inner.clone();
5252                    let fut = async move {
5253                        let method = SortedSetGetRankSvc(inner);
5254                        let codec = tonic::codec::ProstCodec::default();
5255                        let mut grpc = tonic::server::Grpc::new(codec)
5256                            .apply_compression_config(
5257                                accept_compression_encodings,
5258                                send_compression_encodings,
5259                            )
5260                            .apply_max_message_size_config(
5261                                max_decoding_message_size,
5262                                max_encoding_message_size,
5263                            );
5264                        let res = grpc.unary(method, req).await;
5265                        Ok(res)
5266                    };
5267                    Box::pin(fut)
5268                }
5269                "/cache_client.Scs/SortedSetLength" => {
5270                    #[allow(non_camel_case_types)]
5271                    struct SortedSetLengthSvc<T: Scs>(pub Arc<T>);
5272                    impl<
5273                        T: Scs,
5274                    > tonic::server::UnaryService<super::SortedSetLengthRequest>
5275                    for SortedSetLengthSvc<T> {
5276                        type Response = super::SortedSetLengthResponse;
5277                        type Future = BoxFuture<
5278                            tonic::Response<Self::Response>,
5279                            tonic::Status,
5280                        >;
5281                        fn call(
5282                            &mut self,
5283                            request: tonic::Request<super::SortedSetLengthRequest>,
5284                        ) -> Self::Future {
5285                            let inner = Arc::clone(&self.0);
5286                            let fut = async move {
5287                                <T as Scs>::sorted_set_length(&inner, request).await
5288                            };
5289                            Box::pin(fut)
5290                        }
5291                    }
5292                    let accept_compression_encodings = self.accept_compression_encodings;
5293                    let send_compression_encodings = self.send_compression_encodings;
5294                    let max_decoding_message_size = self.max_decoding_message_size;
5295                    let max_encoding_message_size = self.max_encoding_message_size;
5296                    let inner = self.inner.clone();
5297                    let fut = async move {
5298                        let method = SortedSetLengthSvc(inner);
5299                        let codec = tonic::codec::ProstCodec::default();
5300                        let mut grpc = tonic::server::Grpc::new(codec)
5301                            .apply_compression_config(
5302                                accept_compression_encodings,
5303                                send_compression_encodings,
5304                            )
5305                            .apply_max_message_size_config(
5306                                max_decoding_message_size,
5307                                max_encoding_message_size,
5308                            );
5309                        let res = grpc.unary(method, req).await;
5310                        Ok(res)
5311                    };
5312                    Box::pin(fut)
5313                }
5314                "/cache_client.Scs/SortedSetLengthByScore" => {
5315                    #[allow(non_camel_case_types)]
5316                    struct SortedSetLengthByScoreSvc<T: Scs>(pub Arc<T>);
5317                    impl<
5318                        T: Scs,
5319                    > tonic::server::UnaryService<super::SortedSetLengthByScoreRequest>
5320                    for SortedSetLengthByScoreSvc<T> {
5321                        type Response = super::SortedSetLengthByScoreResponse;
5322                        type Future = BoxFuture<
5323                            tonic::Response<Self::Response>,
5324                            tonic::Status,
5325                        >;
5326                        fn call(
5327                            &mut self,
5328                            request: tonic::Request<super::SortedSetLengthByScoreRequest>,
5329                        ) -> Self::Future {
5330                            let inner = Arc::clone(&self.0);
5331                            let fut = async move {
5332                                <T as Scs>::sorted_set_length_by_score(&inner, request)
5333                                    .await
5334                            };
5335                            Box::pin(fut)
5336                        }
5337                    }
5338                    let accept_compression_encodings = self.accept_compression_encodings;
5339                    let send_compression_encodings = self.send_compression_encodings;
5340                    let max_decoding_message_size = self.max_decoding_message_size;
5341                    let max_encoding_message_size = self.max_encoding_message_size;
5342                    let inner = self.inner.clone();
5343                    let fut = async move {
5344                        let method = SortedSetLengthByScoreSvc(inner);
5345                        let codec = tonic::codec::ProstCodec::default();
5346                        let mut grpc = tonic::server::Grpc::new(codec)
5347                            .apply_compression_config(
5348                                accept_compression_encodings,
5349                                send_compression_encodings,
5350                            )
5351                            .apply_max_message_size_config(
5352                                max_decoding_message_size,
5353                                max_encoding_message_size,
5354                            );
5355                        let res = grpc.unary(method, req).await;
5356                        Ok(res)
5357                    };
5358                    Box::pin(fut)
5359                }
5360                "/cache_client.Scs/SortedSetUnionStore" => {
5361                    #[allow(non_camel_case_types)]
5362                    struct SortedSetUnionStoreSvc<T: Scs>(pub Arc<T>);
5363                    impl<
5364                        T: Scs,
5365                    > tonic::server::UnaryService<super::SortedSetUnionStoreRequest>
5366                    for SortedSetUnionStoreSvc<T> {
5367                        type Response = super::SortedSetUnionStoreResponse;
5368                        type Future = BoxFuture<
5369                            tonic::Response<Self::Response>,
5370                            tonic::Status,
5371                        >;
5372                        fn call(
5373                            &mut self,
5374                            request: tonic::Request<super::SortedSetUnionStoreRequest>,
5375                        ) -> Self::Future {
5376                            let inner = Arc::clone(&self.0);
5377                            let fut = async move {
5378                                <T as Scs>::sorted_set_union_store(&inner, request).await
5379                            };
5380                            Box::pin(fut)
5381                        }
5382                    }
5383                    let accept_compression_encodings = self.accept_compression_encodings;
5384                    let send_compression_encodings = self.send_compression_encodings;
5385                    let max_decoding_message_size = self.max_decoding_message_size;
5386                    let max_encoding_message_size = self.max_encoding_message_size;
5387                    let inner = self.inner.clone();
5388                    let fut = async move {
5389                        let method = SortedSetUnionStoreSvc(inner);
5390                        let codec = tonic::codec::ProstCodec::default();
5391                        let mut grpc = tonic::server::Grpc::new(codec)
5392                            .apply_compression_config(
5393                                accept_compression_encodings,
5394                                send_compression_encodings,
5395                            )
5396                            .apply_max_message_size_config(
5397                                max_decoding_message_size,
5398                                max_encoding_message_size,
5399                            );
5400                        let res = grpc.unary(method, req).await;
5401                        Ok(res)
5402                    };
5403                    Box::pin(fut)
5404                }
5405                _ => {
5406                    Box::pin(async move {
5407                        let mut response = http::Response::new(
5408                            tonic::body::Body::default(),
5409                        );
5410                        let headers = response.headers_mut();
5411                        headers
5412                            .insert(
5413                                tonic::Status::GRPC_STATUS,
5414                                (tonic::Code::Unimplemented as i32).into(),
5415                            );
5416                        headers
5417                            .insert(
5418                                http::header::CONTENT_TYPE,
5419                                tonic::metadata::GRPC_CONTENT_TYPE,
5420                            );
5421                        Ok(response)
5422                    })
5423                }
5424            }
5425        }
5426    }
5427    impl<T> Clone for ScsServer<T> {
5428        fn clone(&self) -> Self {
5429            let inner = self.inner.clone();
5430            Self {
5431                inner,
5432                accept_compression_encodings: self.accept_compression_encodings,
5433                send_compression_encodings: self.send_compression_encodings,
5434                max_decoding_message_size: self.max_decoding_message_size,
5435                max_encoding_message_size: self.max_encoding_message_size,
5436            }
5437        }
5438    }
5439    /// Generated gRPC service name
5440    pub const SERVICE_NAME: &str = "cache_client.Scs";
5441    impl<T> tonic::server::NamedService for ScsServer<T> {
5442        const NAME: &'static str = SERVICE_NAME;
5443    }
5444}