1#[derive(Clone, PartialEq, ::prost::Message)]
5pub struct Namespace {
6 #[prost(string, tag="1")]
9 pub name: std::string::String,
10 #[prost(map="string, string", tag="2")]
14 pub labels: ::std::collections::HashMap<std::string::String, std::string::String>,
15}
16#[derive(Clone, PartialEq, ::prost::Message)]
20pub struct Endpoint {
21 #[prost(string, tag="1")]
24 pub name: std::string::String,
25 #[prost(string, tag="2")]
34 pub address: std::string::String,
35 #[prost(int32, tag="3")]
37 pub port: i32,
38 #[prost(map="string, string", tag="4")]
43 pub metadata: ::std::collections::HashMap<std::string::String, std::string::String>,
44}
45#[derive(Clone, PartialEq, ::prost::Message)]
50pub struct Service {
51 #[prost(string, tag="1")]
54 pub name: std::string::String,
55 #[prost(map="string, string", tag="2")]
60 pub metadata: ::std::collections::HashMap<std::string::String, std::string::String>,
61 #[prost(message, repeated, tag="3")]
64 pub endpoints: ::std::vec::Vec<Endpoint>,
65}
66#[derive(Clone, PartialEq, ::prost::Message)]
69pub struct ResolveServiceRequest {
70 #[prost(string, tag="1")]
72 pub name: std::string::String,
73 #[prost(int32, tag="2")]
77 pub max_endpoints: i32,
78 #[prost(string, tag="3")]
97 pub endpoint_filter: std::string::String,
98}
99#[derive(Clone, PartialEq, ::prost::Message)]
101pub struct ResolveServiceResponse {
102 #[prost(message, optional, tag="1")]
103 pub service: ::std::option::Option<Service>,
104}
105# [ doc = r" Generated client implementations." ] pub mod lookup_service_client { # ! [ allow ( unused_variables , dead_code , missing_docs ) ] use tonic :: codegen :: * ; # [ doc = " Service Directory API for looking up service data at runtime." ] pub struct LookupServiceClient < T > { inner : tonic :: client :: Grpc < T > , } impl < T > LookupServiceClient < T > where T : tonic :: client :: GrpcService < tonic :: body :: BoxBody > , T :: ResponseBody : Body + HttpBody + Send + 'static , T :: Error : Into < StdError > , < T :: ResponseBody as HttpBody > :: Error : Into < StdError > + Send , { pub fn new ( inner : T ) -> Self { let inner = tonic :: client :: Grpc :: new ( inner ) ; Self { inner } } pub fn with_interceptor ( inner : T , interceptor : impl Into < tonic :: Interceptor > ) -> Self { let inner = tonic :: client :: Grpc :: with_interceptor ( inner , interceptor ) ; Self { inner } } # [ doc = " Returns a [service][google.cloud.servicedirectory.v1beta1.Service] and its" ] # [ doc = " associated endpoints." ] # [ doc = " Resolving a service is not considered an active developer method." ] pub async fn resolve_service ( & mut self , request : impl tonic :: IntoRequest < super :: ResolveServiceRequest > , ) -> Result < tonic :: Response < super :: ResolveServiceResponse > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.LookupService/ResolveService" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } } impl < T : Clone > Clone for LookupServiceClient < T > { fn clone ( & self ) -> Self { Self { inner : self . inner . clone ( ) , } } } impl < T > std :: fmt :: Debug for LookupServiceClient < T > { fn fmt ( & self , f : & mut std :: fmt :: Formatter < '_ > ) -> std :: fmt :: Result { write ! ( f , "LookupServiceClient {{ ... }}" ) } } }#[derive(Clone, PartialEq, ::prost::Message)]
107pub struct CreateNamespaceRequest {
108 #[prost(string, tag="1")]
111 pub parent: std::string::String,
112 #[prost(string, tag="2")]
120 pub namespace_id: std::string::String,
121 #[prost(message, optional, tag="3")]
123 pub namespace: ::std::option::Option<Namespace>,
124}
125#[derive(Clone, PartialEq, ::prost::Message)]
127pub struct ListNamespacesRequest {
128 #[prost(string, tag="1")]
131 pub parent: std::string::String,
132 #[prost(int32, tag="2")]
134 pub page_size: i32,
135 #[prost(string, tag="3")]
137 pub page_token: std::string::String,
138 #[prost(string, tag="4")]
162 pub filter: std::string::String,
163 #[prost(string, tag="5")]
173 pub order_by: std::string::String,
174}
175#[derive(Clone, PartialEq, ::prost::Message)]
177pub struct ListNamespacesResponse {
178 #[prost(message, repeated, tag="1")]
180 pub namespaces: ::std::vec::Vec<Namespace>,
181 #[prost(string, tag="2")]
184 pub next_page_token: std::string::String,
185}
186#[derive(Clone, PartialEq, ::prost::Message)]
188pub struct GetNamespaceRequest {
189 #[prost(string, tag="1")]
191 pub name: std::string::String,
192}
193#[derive(Clone, PartialEq, ::prost::Message)]
195pub struct UpdateNamespaceRequest {
196 #[prost(message, optional, tag="1")]
198 pub namespace: ::std::option::Option<Namespace>,
199 #[prost(message, optional, tag="2")]
201 pub update_mask: ::std::option::Option<::prost_types::FieldMask>,
202}
203#[derive(Clone, PartialEq, ::prost::Message)]
205pub struct DeleteNamespaceRequest {
206 #[prost(string, tag="1")]
208 pub name: std::string::String,
209}
210#[derive(Clone, PartialEq, ::prost::Message)]
212pub struct CreateServiceRequest {
213 #[prost(string, tag="1")]
215 pub parent: std::string::String,
216 #[prost(string, tag="2")]
224 pub service_id: std::string::String,
225 #[prost(message, optional, tag="3")]
227 pub service: ::std::option::Option<Service>,
228}
229#[derive(Clone, PartialEq, ::prost::Message)]
231pub struct ListServicesRequest {
232 #[prost(string, tag="1")]
235 pub parent: std::string::String,
236 #[prost(int32, tag="2")]
238 pub page_size: i32,
239 #[prost(string, tag="3")]
242 pub page_token: std::string::String,
243 #[prost(string, tag="4")]
267 pub filter: std::string::String,
268 #[prost(string, tag="5")]
270 pub order_by: std::string::String,
271}
272#[derive(Clone, PartialEq, ::prost::Message)]
274pub struct ListServicesResponse {
275 #[prost(message, repeated, tag="1")]
277 pub services: ::std::vec::Vec<Service>,
278 #[prost(string, tag="2")]
281 pub next_page_token: std::string::String,
282}
283#[derive(Clone, PartialEq, ::prost::Message)]
287pub struct GetServiceRequest {
288 #[prost(string, tag="1")]
290 pub name: std::string::String,
291}
292#[derive(Clone, PartialEq, ::prost::Message)]
294pub struct UpdateServiceRequest {
295 #[prost(message, optional, tag="1")]
297 pub service: ::std::option::Option<Service>,
298 #[prost(message, optional, tag="2")]
300 pub update_mask: ::std::option::Option<::prost_types::FieldMask>,
301}
302#[derive(Clone, PartialEq, ::prost::Message)]
304pub struct DeleteServiceRequest {
305 #[prost(string, tag="1")]
307 pub name: std::string::String,
308}
309#[derive(Clone, PartialEq, ::prost::Message)]
311pub struct CreateEndpointRequest {
312 #[prost(string, tag="1")]
314 pub parent: std::string::String,
315 #[prost(string, tag="2")]
323 pub endpoint_id: std::string::String,
324 #[prost(message, optional, tag="3")]
326 pub endpoint: ::std::option::Option<Endpoint>,
327}
328#[derive(Clone, PartialEq, ::prost::Message)]
330pub struct ListEndpointsRequest {
331 #[prost(string, tag="1")]
334 pub parent: std::string::String,
335 #[prost(int32, tag="2")]
337 pub page_size: i32,
338 #[prost(string, tag="3")]
341 pub page_token: std::string::String,
342 #[prost(string, tag="4")]
368 pub filter: std::string::String,
369 #[prost(string, tag="5")]
371 pub order_by: std::string::String,
372}
373#[derive(Clone, PartialEq, ::prost::Message)]
375pub struct ListEndpointsResponse {
376 #[prost(message, repeated, tag="1")]
378 pub endpoints: ::std::vec::Vec<Endpoint>,
379 #[prost(string, tag="2")]
382 pub next_page_token: std::string::String,
383}
384#[derive(Clone, PartialEq, ::prost::Message)]
388pub struct GetEndpointRequest {
389 #[prost(string, tag="1")]
391 pub name: std::string::String,
392}
393#[derive(Clone, PartialEq, ::prost::Message)]
395pub struct UpdateEndpointRequest {
396 #[prost(message, optional, tag="1")]
398 pub endpoint: ::std::option::Option<Endpoint>,
399 #[prost(message, optional, tag="2")]
401 pub update_mask: ::std::option::Option<::prost_types::FieldMask>,
402}
403#[derive(Clone, PartialEq, ::prost::Message)]
405pub struct DeleteEndpointRequest {
406 #[prost(string, tag="1")]
408 pub name: std::string::String,
409}
410# [ doc = r" Generated client implementations." ] pub mod registration_service_client { # ! [ allow ( unused_variables , dead_code , missing_docs ) ] use tonic :: codegen :: * ; # [ doc = " Service Directory API for registering services. It defines the following" ] # [ doc = " resource model:" ] # [ doc = "" ] # [ doc = " - The API has a collection of" ] # [ doc = " [Namespace][google.cloud.servicedirectory.v1beta1.Namespace]" ] # [ doc = " resources, named `projects/*/locations/*/namespaces/*`." ] # [ doc = "" ] # [ doc = " - Each Namespace has a collection of" ] # [ doc = " [Service][google.cloud.servicedirectory.v1beta1.Service] resources, named" ] # [ doc = " `projects/*/locations/*/namespaces/*/services/*`." ] # [ doc = "" ] # [ doc = " - Each Service has a collection of" ] # [ doc = " [Endpoint][google.cloud.servicedirectory.v1beta1.Endpoint]" ] # [ doc = " resources, named" ] # [ doc = " `projects/*/locations/*/namespaces/*/services/*/endpoints/*`." ] pub struct RegistrationServiceClient < T > { inner : tonic :: client :: Grpc < T > , } impl < T > RegistrationServiceClient < T > where T : tonic :: client :: GrpcService < tonic :: body :: BoxBody > , T :: ResponseBody : Body + HttpBody + Send + 'static , T :: Error : Into < StdError > , < T :: ResponseBody as HttpBody > :: Error : Into < StdError > + Send , { pub fn new ( inner : T ) -> Self { let inner = tonic :: client :: Grpc :: new ( inner ) ; Self { inner } } pub fn with_interceptor ( inner : T , interceptor : impl Into < tonic :: Interceptor > ) -> Self { let inner = tonic :: client :: Grpc :: with_interceptor ( inner , interceptor ) ; Self { inner } } # [ doc = " Creates a namespace, and returns the new Namespace." ] pub async fn create_namespace ( & mut self , request : impl tonic :: IntoRequest < super :: CreateNamespaceRequest > , ) -> Result < tonic :: Response < super :: Namespace > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/CreateNamespace" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Lists all namespaces." ] pub async fn list_namespaces ( & mut self , request : impl tonic :: IntoRequest < super :: ListNamespacesRequest > , ) -> Result < tonic :: Response < super :: ListNamespacesResponse > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/ListNamespaces" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Gets a namespace." ] pub async fn get_namespace ( & mut self , request : impl tonic :: IntoRequest < super :: GetNamespaceRequest > , ) -> Result < tonic :: Response < super :: Namespace > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/GetNamespace" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Updates a namespace." ] pub async fn update_namespace ( & mut self , request : impl tonic :: IntoRequest < super :: UpdateNamespaceRequest > , ) -> Result < tonic :: Response < super :: Namespace > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/UpdateNamespace" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Deletes a namespace. This also deletes all services and endpoints in" ] # [ doc = " the namespace." ] pub async fn delete_namespace ( & mut self , request : impl tonic :: IntoRequest < super :: DeleteNamespaceRequest > , ) -> Result < tonic :: Response < ( ) > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/DeleteNamespace" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Creates a service, and returns the new Service." ] pub async fn create_service ( & mut self , request : impl tonic :: IntoRequest < super :: CreateServiceRequest > , ) -> Result < tonic :: Response < super :: Service > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/CreateService" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Lists all services belonging to a namespace." ] pub async fn list_services ( & mut self , request : impl tonic :: IntoRequest < super :: ListServicesRequest > , ) -> Result < tonic :: Response < super :: ListServicesResponse > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/ListServices" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Gets a service." ] pub async fn get_service ( & mut self , request : impl tonic :: IntoRequest < super :: GetServiceRequest > , ) -> Result < tonic :: Response < super :: Service > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/GetService" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Updates a service." ] pub async fn update_service ( & mut self , request : impl tonic :: IntoRequest < super :: UpdateServiceRequest > , ) -> Result < tonic :: Response < super :: Service > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/UpdateService" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Deletes a service. This also deletes all endpoints associated with" ] # [ doc = " the service." ] pub async fn delete_service ( & mut self , request : impl tonic :: IntoRequest < super :: DeleteServiceRequest > , ) -> Result < tonic :: Response < ( ) > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/DeleteService" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Creates a endpoint, and returns the new Endpoint." ] pub async fn create_endpoint ( & mut self , request : impl tonic :: IntoRequest < super :: CreateEndpointRequest > , ) -> Result < tonic :: Response < super :: Endpoint > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/CreateEndpoint" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Lists all endpoints." ] pub async fn list_endpoints ( & mut self , request : impl tonic :: IntoRequest < super :: ListEndpointsRequest > , ) -> Result < tonic :: Response < super :: ListEndpointsResponse > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/ListEndpoints" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Gets a endpoint." ] pub async fn get_endpoint ( & mut self , request : impl tonic :: IntoRequest < super :: GetEndpointRequest > , ) -> Result < tonic :: Response < super :: Endpoint > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/GetEndpoint" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Updates a endpoint." ] pub async fn update_endpoint ( & mut self , request : impl tonic :: IntoRequest < super :: UpdateEndpointRequest > , ) -> Result < tonic :: Response < super :: Endpoint > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/UpdateEndpoint" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Deletes a endpoint." ] pub async fn delete_endpoint ( & mut self , request : impl tonic :: IntoRequest < super :: DeleteEndpointRequest > , ) -> Result < tonic :: Response < ( ) > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/DeleteEndpoint" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Gets the IAM Policy for a resource (namespace or service only)." ] pub async fn get_iam_policy ( & mut self , request : impl tonic :: IntoRequest < super :: super :: super :: super :: iam :: v1 :: GetIamPolicyRequest > , ) -> Result < tonic :: Response < super :: super :: super :: super :: iam :: v1 :: Policy > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/GetIamPolicy" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Sets the IAM Policy for a resource (namespace or service only)." ] pub async fn set_iam_policy ( & mut self , request : impl tonic :: IntoRequest < super :: super :: super :: super :: iam :: v1 :: SetIamPolicyRequest > , ) -> Result < tonic :: Response < super :: super :: super :: super :: iam :: v1 :: Policy > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/SetIamPolicy" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Tests IAM permissions for a resource (namespace or service only)." ] pub async fn test_iam_permissions ( & mut self , request : impl tonic :: IntoRequest < super :: super :: super :: super :: iam :: v1 :: TestIamPermissionsRequest > , ) -> Result < tonic :: Response < super :: super :: super :: super :: iam :: v1 :: TestIamPermissionsResponse > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.servicedirectory.v1beta1.RegistrationService/TestIamPermissions" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } } impl < T : Clone > Clone for RegistrationServiceClient < T > { fn clone ( & self ) -> Self { Self { inner : self . inner . clone ( ) , } } } impl < T > std :: fmt :: Debug for RegistrationServiceClient < T > { fn fmt ( & self , f : & mut std :: fmt :: Formatter < '_ > ) -> std :: fmt :: Result { write ! ( f , "RegistrationServiceClient {{ ... }}" ) } } }use serde :: { Serialize , Deserialize } ;