iota_grpc_api/
config.rs

1// Copyright (c) 2025 IOTA Stiftung
2// SPDX-License-Identifier: Apache-2.0
3
4/// Configuration for the gRPC API service
5#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
6#[serde(rename_all = "kebab-case")]
7pub struct Config {
8    /// The address to bind the gRPC server to
9    #[serde(default = "default_grpc_api_address")]
10    pub address: std::net::SocketAddr,
11
12    /// Buffer size for broadcast channels used for checkpoint streaming
13    #[serde(default = "default_checkpoint_broadcast_buffer_size")]
14    pub checkpoint_broadcast_buffer_size: usize,
15
16    /// Buffer size for broadcast channels used for event streaming
17    #[serde(default = "default_event_broadcast_buffer_size")]
18    pub event_broadcast_buffer_size: usize,
19}
20
21impl Default for Config {
22    fn default() -> Self {
23        Self {
24            address: default_grpc_api_address(),
25            checkpoint_broadcast_buffer_size: default_checkpoint_broadcast_buffer_size(),
26            event_broadcast_buffer_size: default_event_broadcast_buffer_size(),
27        }
28    }
29}
30
31fn default_grpc_api_address() -> std::net::SocketAddr {
32    use std::net::{IpAddr, Ipv4Addr};
33    std::net::SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 50051)
34}
35
36fn default_checkpoint_broadcast_buffer_size() -> usize {
37    100
38}
39
40fn default_event_broadcast_buffer_size() -> usize {
41    1000
42}