use serde::{Deserialize, Serialize};
fn default_timeout_ms() -> u64 {
5000
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct GrpcSourceConfig {
#[serde(default = "default_host")]
pub host: String,
#[serde(default = "default_port")]
pub port: u16,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub endpoint: Option<String>,
#[serde(default = "default_timeout_ms")]
pub timeout_ms: u64,
}
fn default_host() -> String {
"0.0.0.0".to_string()
}
fn default_port() -> u16 {
50051
}
impl Default for GrpcSourceConfig {
fn default() -> Self {
Self {
host: default_host(),
port: default_port(),
endpoint: None,
timeout_ms: default_timeout_ms(),
}
}
}
impl GrpcSourceConfig {
pub fn validate(&self) -> anyhow::Result<()> {
if self.port == 0 {
return Err(anyhow::anyhow!(
"Validation error: port cannot be 0. \
Please specify a valid port number (1-65535)"
));
}
if self.timeout_ms == 0 {
return Err(anyhow::anyhow!(
"Validation error: timeout_ms cannot be 0. \
Please specify a positive timeout value in milliseconds"
));
}
Ok(())
}
}