use crate::Result;
#[derive(Clone, Debug)]
pub struct ImageAnnotator<T>
where
T: super::stub::ImageAnnotator + std::fmt::Debug + Send + Sync,
{
inner: T,
duration: gaxi::observability::DurationMetric,
}
impl<T> ImageAnnotator<T>
where
T: super::stub::ImageAnnotator + std::fmt::Debug + Send + Sync,
{
pub fn new(inner: T) -> Self {
Self {
inner,
duration: gaxi::observability::DurationMetric::new(&info::INSTRUMENTATION_CLIENT_INFO),
}
}
}
impl<T> super::stub::ImageAnnotator for ImageAnnotator<T>
where
T: super::stub::ImageAnnotator + std::fmt::Debug + Send + Sync,
{
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn batch_annotate_images(
&self,
req: crate::model::BatchAnnotateImagesRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::BatchAnnotateImagesResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ImageAnnotator::batch_annotate_images",
self.inner.batch_annotate_images(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn batch_annotate_files(
&self,
req: crate::model::BatchAnnotateFilesRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::BatchAnnotateFilesResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ImageAnnotator::batch_annotate_files",
self.inner.batch_annotate_files(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn async_batch_annotate_images(
&self,
req: crate::model::AsyncBatchAnnotateImagesRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<google_cloud_longrunning::model::Operation>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ImageAnnotator::async_batch_annotate_images",
self.inner.async_batch_annotate_images(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn async_batch_annotate_files(
&self,
req: crate::model::AsyncBatchAnnotateFilesRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<google_cloud_longrunning::model::Operation>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ImageAnnotator::async_batch_annotate_files",
self.inner.async_batch_annotate_files(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn get_operation(
&self,
req: google_cloud_longrunning::model::GetOperationRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<google_cloud_longrunning::model::Operation>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ImageAnnotator::get_operation",
self.inner.get_operation(req, options));
pending.await
}
fn get_polling_error_policy(
&self,
options: &crate::RequestOptions,
) -> std::sync::Arc<dyn google_cloud_gax::polling_error_policy::PollingErrorPolicy> {
self.inner.get_polling_error_policy(options)
}
fn get_polling_backoff_policy(
&self,
options: &crate::RequestOptions,
) -> std::sync::Arc<dyn google_cloud_gax::polling_backoff_policy::PollingBackoffPolicy> {
self.inner.get_polling_backoff_policy(options)
}
}
#[derive(Clone, Debug)]
pub struct ProductSearch<T>
where
T: super::stub::ProductSearch + std::fmt::Debug + Send + Sync,
{
inner: T,
duration: gaxi::observability::DurationMetric,
}
impl<T> ProductSearch<T>
where
T: super::stub::ProductSearch + std::fmt::Debug + Send + Sync,
{
pub fn new(inner: T) -> Self {
Self {
inner,
duration: gaxi::observability::DurationMetric::new(&info::INSTRUMENTATION_CLIENT_INFO),
}
}
}
impl<T> super::stub::ProductSearch for ProductSearch<T>
where
T: super::stub::ProductSearch + std::fmt::Debug + Send + Sync,
{
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn create_product_set(
&self,
req: crate::model::CreateProductSetRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ProductSet>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::create_product_set",
self.inner.create_product_set(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn list_product_sets(
&self,
req: crate::model::ListProductSetsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListProductSetsResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::list_product_sets",
self.inner.list_product_sets(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn get_product_set(
&self,
req: crate::model::GetProductSetRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ProductSet>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::get_product_set",
self.inner.get_product_set(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn update_product_set(
&self,
req: crate::model::UpdateProductSetRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ProductSet>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::update_product_set",
self.inner.update_product_set(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn delete_product_set(
&self,
req: crate::model::DeleteProductSetRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::delete_product_set",
self.inner.delete_product_set(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn create_product(
&self,
req: crate::model::CreateProductRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Product>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::create_product",
self.inner.create_product(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn list_products(
&self,
req: crate::model::ListProductsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListProductsResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::list_products",
self.inner.list_products(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn get_product(
&self,
req: crate::model::GetProductRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Product>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::get_product",
self.inner.get_product(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn update_product(
&self,
req: crate::model::UpdateProductRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Product>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::update_product",
self.inner.update_product(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn delete_product(
&self,
req: crate::model::DeleteProductRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::delete_product",
self.inner.delete_product(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn create_reference_image(
&self,
req: crate::model::CreateReferenceImageRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ReferenceImage>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::create_reference_image",
self.inner.create_reference_image(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn delete_reference_image(
&self,
req: crate::model::DeleteReferenceImageRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::delete_reference_image",
self.inner.delete_reference_image(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn list_reference_images(
&self,
req: crate::model::ListReferenceImagesRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListReferenceImagesResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::list_reference_images",
self.inner.list_reference_images(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn get_reference_image(
&self,
req: crate::model::GetReferenceImageRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ReferenceImage>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::get_reference_image",
self.inner.get_reference_image(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn add_product_to_product_set(
&self,
req: crate::model::AddProductToProductSetRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::add_product_to_product_set",
self.inner.add_product_to_product_set(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn remove_product_from_product_set(
&self,
req: crate::model::RemoveProductFromProductSetRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::remove_product_from_product_set",
self.inner.remove_product_from_product_set(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn list_products_in_product_set(
&self,
req: crate::model::ListProductsInProductSetRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListProductsInProductSetResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::list_products_in_product_set",
self.inner.list_products_in_product_set(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn import_product_sets(
&self,
req: crate::model::ImportProductSetsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<google_cloud_longrunning::model::Operation>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::import_product_sets",
self.inner.import_product_sets(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn purge_products(
&self,
req: crate::model::PurgeProductsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<google_cloud_longrunning::model::Operation>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::purge_products",
self.inner.purge_products(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn get_operation(
&self,
req: google_cloud_longrunning::model::GetOperationRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<google_cloud_longrunning::model::Operation>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::ProductSearch::get_operation",
self.inner.get_operation(req, options));
pending.await
}
fn get_polling_error_policy(
&self,
options: &crate::RequestOptions,
) -> std::sync::Arc<dyn google_cloud_gax::polling_error_policy::PollingErrorPolicy> {
self.inner.get_polling_error_policy(options)
}
fn get_polling_backoff_policy(
&self,
options: &crate::RequestOptions,
) -> std::sync::Arc<dyn google_cloud_gax::polling_backoff_policy::PollingBackoffPolicy> {
self.inner.get_polling_backoff_policy(options)
}
}
pub(crate) mod info {
const NAME: &str = env!("CARGO_PKG_NAME");
const VERSION: &str = env!("CARGO_PKG_VERSION");
pub(crate) static INSTRUMENTATION_CLIENT_INFO: std::sync::LazyLock<
gaxi::options::InstrumentationClientInfo,
> = std::sync::LazyLock::new(|| {
let mut info = gaxi::options::InstrumentationClientInfo::default();
info.service_name = "vision";
info.client_version = VERSION;
info.client_artifact = NAME;
info.default_host = "vision";
info
});
}