#![allow(rustdoc::broken_intra_doc_links)]
use crate::Result;
use std::sync::Arc;
#[derive(Clone, Debug)]
pub struct ServiceUsage {
inner: Arc<dyn crate::stubs::dynamic::ServiceUsage>,
}
impl ServiceUsage {
pub async fn new() -> Result<Self> {
Self::new_with_config(gax::options::ClientConfig::default()).await
}
pub async fn new_with_config(conf: gax::options::ClientConfig) -> Result<Self> {
let inner = Self::build_inner(conf).await?;
Ok(Self { inner })
}
pub fn from_stub<T>(stub: T) -> Self
where
T: crate::stubs::ServiceUsage + 'static,
{
Self {
inner: Arc::new(stub),
}
}
async fn build_inner(
conf: gax::options::ClientConfig,
) -> Result<Arc<dyn crate::stubs::dynamic::ServiceUsage>> {
if conf.tracing_enabled() {
return Ok(Arc::new(Self::build_with_tracing(conf).await?));
}
Ok(Arc::new(Self::build_transport(conf).await?))
}
async fn build_transport(
conf: gax::options::ClientConfig,
) -> Result<impl crate::stubs::ServiceUsage> {
crate::transport::ServiceUsage::new(conf).await
}
async fn build_with_tracing(
conf: gax::options::ClientConfig,
) -> Result<impl crate::stubs::ServiceUsage> {
Self::build_transport(conf)
.await
.map(crate::tracing::ServiceUsage::new)
}
pub fn enable_service(
&self,
name: impl Into<std::string::String>,
) -> crate::builders::service_usage::EnableService {
crate::builders::service_usage::EnableService::new(self.inner.clone()).set_name(name.into())
}
pub fn disable_service(
&self,
name: impl Into<std::string::String>,
) -> crate::builders::service_usage::DisableService {
crate::builders::service_usage::DisableService::new(self.inner.clone())
.set_name(name.into())
}
pub fn get_service(
&self,
name: impl Into<std::string::String>,
) -> crate::builders::service_usage::GetService {
crate::builders::service_usage::GetService::new(self.inner.clone()).set_name(name.into())
}
pub fn list_services(
&self,
parent: impl Into<std::string::String>,
) -> crate::builders::service_usage::ListServices {
crate::builders::service_usage::ListServices::new(self.inner.clone())
.set_parent(parent.into())
}
pub fn batch_enable_services(
&self,
parent: impl Into<std::string::String>,
) -> crate::builders::service_usage::BatchEnableServices {
crate::builders::service_usage::BatchEnableServices::new(self.inner.clone())
.set_parent(parent.into())
}
pub fn batch_get_services(
&self,
parent: impl Into<std::string::String>,
) -> crate::builders::service_usage::BatchGetServices {
crate::builders::service_usage::BatchGetServices::new(self.inner.clone())
.set_parent(parent.into())
}
pub fn list_operations(&self) -> crate::builders::service_usage::ListOperations {
crate::builders::service_usage::ListOperations::new(self.inner.clone())
}
pub fn get_operation(
&self,
name: impl Into<std::string::String>,
) -> crate::builders::service_usage::GetOperation {
crate::builders::service_usage::GetOperation::new(self.inner.clone()).set_name(name.into())
}
}