pub struct ServerConfig {
pub dialog: DialogConfig,
pub auto_options_response: bool,
pub auto_register_response: bool,
pub domain: Option<String>,
}
Expand description
Server-specific configuration
Extends DialogConfig with server-specific settings including automatic response handling, domain configuration, and server behavior options. Used by DialogServer to configure server-side SIP operations.
§Examples
§Basic Server Setup
use rvoip_dialog_core::api::ServerConfig;
let config = ServerConfig::new("0.0.0.0:5060".parse().unwrap())
.with_domain("sip.example.com")
.with_auto_options();
assert_eq!(config.domain.unwrap(), "sip.example.com");
assert!(config.auto_options_response);
§Production Server Configuration
use rvoip_dialog_core::api::ServerConfig;
use std::time::Duration;
let mut config = ServerConfig::new("0.0.0.0:5060".parse().unwrap())
.with_domain("sip.production.com")
.with_auto_options()
.with_auto_register();
// Customize for production load
config.dialog = config.dialog
.with_timeout(Duration::from_secs(300))
.with_max_dialogs(100000)
.with_user_agent("ProductionSIP/1.0");
assert!(config.validate().is_ok());
Fields§
§dialog: DialogConfig
Base dialog configuration
auto_options_response: bool
Enable automatic response to OPTIONS requests
When true, the server automatically responds to OPTIONS requests with a 200 OK including supported methods. When false, OPTIONS requests are forwarded to the application for custom handling.
auto_register_response: bool
Enable automatic response to REGISTER requests
When true, the server automatically handles REGISTER requests for basic registration functionality. When false, REGISTER requests are forwarded to the application.
domain: Option<String>
Server domain name
The domain name this server represents. Used in Contact headers and for routing decisions. Should match your SIP domain.
Implementations§
Source§impl ServerConfig
impl ServerConfig
Sourcepub fn new(local_address: SocketAddr) -> Self
pub fn new(local_address: SocketAddr) -> Self
Create a new server configuration with a local address
Creates a ServerConfig with the specified local address and sensible defaults for server operation.
§Arguments
local_address
- Address to bind the server to
§Returns
New ServerConfig with defaults
§Examples
use rvoip_dialog_core::api::ServerConfig;
let config = ServerConfig::new("0.0.0.0:5060".parse().unwrap());
assert_eq!(config.dialog.local_address.port(), 5060);
assert!(config.auto_options_response); // Default enabled
assert!(!config.auto_register_response); // Default disabled
Sourcepub fn with_domain(self, domain: impl Into<String>) -> Self
pub fn with_domain(self, domain: impl Into<String>) -> Self
Set the server domain
Configures the domain name that this server represents. Used for Contact header generation and routing decisions.
§Arguments
domain
- Server domain name (e.g., “sip.example.com”)
§Returns
Self for method chaining
§Examples
use rvoip_dialog_core::api::ServerConfig;
let config = ServerConfig::new("0.0.0.0:5060".parse().unwrap())
.with_domain("sip.mycompany.com");
assert_eq!(config.domain.unwrap(), "sip.mycompany.com");
Sourcepub fn with_auto_options(self) -> Self
pub fn with_auto_options(self) -> Self
Enable automatic OPTIONS response
Configures the server to automatically respond to OPTIONS requests with a 200 OK including supported SIP methods. This is useful for capability discovery and keep-alive mechanisms.
§Returns
Self for method chaining
§Examples
use rvoip_dialog_core::api::ServerConfig;
let config = ServerConfig::new("0.0.0.0:5060".parse().unwrap())
.with_auto_options();
assert!(config.auto_options_response);
Sourcepub fn with_auto_register(self) -> Self
pub fn with_auto_register(self) -> Self
Enable automatic REGISTER response
Configures the server to automatically handle REGISTER requests for basic SIP registration functionality. Use this for simple registrar services or disable for custom registration handling.
§Returns
Self for method chaining
§Examples
use rvoip_dialog_core::api::ServerConfig;
let config = ServerConfig::new("0.0.0.0:5060".parse().unwrap())
.with_auto_register();
assert!(config.auto_register_response);
Sourcepub fn validate(&self) -> Result<(), String>
pub fn validate(&self) -> Result<(), String>
Validate the server configuration
Validates both the server-specific settings and the underlying dialog configuration to ensure everything is properly configured.
§Returns
Ok(()) if valid, Err(message) if invalid
§Examples
use rvoip_dialog_core::api::ServerConfig;
let config = ServerConfig::new("0.0.0.0:5060".parse().unwrap())
.with_domain("test.com");
assert!(config.validate().is_ok());
Trait Implementations§
Source§impl Clone for ServerConfig
impl Clone for ServerConfig
Source§fn clone(&self) -> ServerConfig
fn clone(&self) -> ServerConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ServerConfig
impl Debug for ServerConfig
Source§impl Default for ServerConfig
impl Default for ServerConfig
Source§impl<'de> Deserialize<'de> for ServerConfig
impl<'de> Deserialize<'de> for ServerConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl From<ServerConfig> for DialogManagerConfig
impl From<ServerConfig> for DialogManagerConfig
Source§fn from(server_config: ServerConfig) -> Self
fn from(server_config: ServerConfig) -> Self
Auto Trait Implementations§
impl Freeze for ServerConfig
impl RefUnwindSafe for ServerConfig
impl Send for ServerConfig
impl Sync for ServerConfig
impl Unpin for ServerConfig
impl UnwindSafe for ServerConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> SipJson for Twhere
T: Serialize + DeserializeOwned,
impl<T> SipJson for Twhere
T: Serialize + DeserializeOwned,
Source§fn to_sip_value(&self) -> Result<SipValue, SipJsonError>
fn to_sip_value(&self) -> Result<SipValue, SipJsonError>
Source§fn from_sip_value(value: &SipValue) -> Result<T, SipJsonError>
fn from_sip_value(value: &SipValue) -> Result<T, SipJsonError>
Source§impl<T> SipJsonExt for T
impl<T> SipJsonExt for T
Source§fn path(&self, path: impl AsRef<str>) -> Option<SipValue>
fn path(&self, path: impl AsRef<str>) -> Option<SipValue>
Simple path accessor that returns an Option directly
Source§fn path_str(&self, path: impl AsRef<str>) -> Option<String>
fn path_str(&self, path: impl AsRef<str>) -> Option<String>
Get a string value at the given path
Source§fn path_str_or(&self, path: impl AsRef<str>, default: &str) -> String
fn path_str_or(&self, path: impl AsRef<str>, default: &str) -> String
Get a string value at the given path, or return the default value if not found