Skip to main content

gcloud_pubsub/apiv1/
conn_pool.rs

1use google_cloud_gax::conn::{Channel, Environment};
2use google_cloud_gax::conn::{ConnectionManager as GRPCConnectionManager, ConnectionOptions, Error};
3
4/// OAuth audience for token requests (global, works for all regional endpoints)
5pub const AUDIENCE: &str = "https://pubsub.googleapis.com/";
6/// Default Pub/Sub endpoint domain
7pub const PUBSUB: &str = "pubsub.googleapis.com";
8pub const SCOPES: [&str; 2] = [
9    "https://www.googleapis.com/auth/cloud-platform",
10    "https://www.googleapis.com/auth/pubsub",
11];
12
13#[derive(Debug)]
14pub struct ConnectionManager {
15    inner: GRPCConnectionManager,
16}
17
18impl ConnectionManager {
19    pub async fn new(
20        pool_size: usize,
21        domain: &str,
22        environment: &Environment,
23        conn_options: &ConnectionOptions,
24    ) -> Result<Self, Error> {
25        // Derive endpoint URL from domain to support regional endpoints
26        let endpoint_url = format!("https://{}/", domain);
27        Ok(ConnectionManager {
28            inner: GRPCConnectionManager::new(pool_size, domain, &endpoint_url, environment, conn_options).await?,
29        })
30    }
31
32    pub fn num(&self) -> usize {
33        self.inner.num()
34    }
35
36    pub fn conn(&self) -> Channel {
37        self.inner.conn()
38    }
39}