gcloud_bigquery/grpc/apiv1/
conn_pool.rs1use 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}