ic_agent/agent/
agent_config.rs

1use reqwest::Client;
2use url::Url;
3
4use crate::{
5    agent::{NonceFactory, NonceGenerator},
6    identity::{anonymous::AnonymousIdentity, Identity},
7};
8use std::{sync::Arc, time::Duration};
9
10use super::{route_provider::RouteProvider, HttpService};
11
12/// A configuration for an agent.
13#[non_exhaustive]
14pub struct AgentConfig {
15    /// See [`with_nonce_factory`](super::AgentBuilder::with_nonce_factory).
16    pub nonce_factory: Arc<dyn NonceGenerator>,
17    /// See [`with_identity`](super::AgentBuilder::with_identity).
18    pub identity: Arc<dyn Identity>,
19    /// See [`with_ingress_expiry`](super::AgentBuilder::with_ingress_expiry).
20    pub ingress_expiry: Duration,
21    /// See [`with_http_client`](super::AgentBuilder::with_http_client).
22    pub client: Option<Client>,
23    /// See [`with_route_provider`](super::AgentBuilder::with_route_provider).
24    pub route_provider: Option<Arc<dyn RouteProvider>>,
25    /// See [`verify_query_signatures`](super::AgentBuilder::with_verify_query_signatures).
26    pub verify_query_signatures: bool,
27    /// See [`with_max_concurrent_requests`](super::AgentBuilder::with_max_concurrent_requests).
28    pub max_concurrent_requests: usize,
29    /// See [`with_max_response_body_size`](super::AgentBuilder::with_max_response_body_size).
30    pub max_response_body_size: Option<usize>,
31    /// See [`with_max_tcp_error_retries`](super::AgentBuilder::with_max_tcp_error_retries).
32    pub max_tcp_error_retries: usize,
33    /// See [`with_arc_http_middleware`](super::AgentBuilder::with_arc_http_middleware).
34    pub http_service: Option<Arc<dyn HttpService>>,
35    /// See [`with_max_polling_time`](super::AgentBuilder::with_max_polling_time).
36    pub max_polling_time: Duration,
37    /// See [`with_background_dynamic_routing`](super::AgentBuilder::with_background_dynamic_routing).
38    pub background_dynamic_routing: bool,
39    /// See [`with_url`](super::AgentBuilder::with_url).
40    pub url: Option<Url>,
41}
42
43impl Default for AgentConfig {
44    fn default() -> Self {
45        Self {
46            nonce_factory: Arc::new(NonceFactory::random()),
47            identity: Arc::new(AnonymousIdentity {}),
48            ingress_expiry: Duration::from_secs(3 * 60),
49            client: None,
50            http_service: None,
51            verify_query_signatures: true,
52            max_concurrent_requests: 50,
53            route_provider: None,
54            max_response_body_size: None,
55            max_tcp_error_retries: 0,
56            max_polling_time: Duration::from_secs(60 * 5),
57            background_dynamic_routing: false,
58            url: None,
59        }
60    }
61}