gcloud_bigquery/grpc/apiv1/
conn_pool.rs

1use crate::grpc::apiv1::bigquery_client::StreamingWriteClient;
2use google_cloud_gax::conn::{
3    Channel, ConnectionManager as GRPCConnectionManager, ConnectionOptions, Environment, Error,
4};
5use google_cloud_googleapis::cloud::bigquery::storage::v1::big_query_write_client::BigQueryWriteClient;
6
7pub const AUDIENCE: &str = "https://bigquerystorage.googleapis.com/";
8pub const DOMAIN: &str = "bigquerystorage.googleapis.com";
9pub const SCOPES: [&str; 3] = [
10    "https://www.googleapis.com/auth/bigquery",
11    "https://www.googleapis.com/auth/bigquery.insertdata",
12    "https://www.googleapis.com/auth/cloud-platform",
13];
14
15#[derive(Debug)]
16pub struct ConnectionManager {
17    inner: GRPCConnectionManager,
18}
19
20impl ConnectionManager {
21    pub async fn new(
22        pool_size: usize,
23        environment: &Environment,
24        conn_options: &ConnectionOptions,
25    ) -> Result<Self, Error> {
26        Ok(ConnectionManager {
27            inner: GRPCConnectionManager::new(pool_size, DOMAIN, AUDIENCE, environment, conn_options).await?,
28        })
29    }
30
31    pub fn num(&self) -> usize {
32        self.inner.num()
33    }
34
35    pub fn conn(&self) -> Channel {
36        self.inner.conn()
37    }
38
39    pub fn writer(&self) -> StreamingWriteClient {
40        StreamingWriteClient::new(BigQueryWriteClient::new(self.conn()))
41    }
42}