Expand description
RVOIP Session Core Library
This library provides Session Initiation Protocol (SIP) session and dialog management for the RVOIP stack. It serves as the middle layer between low-level SIP transaction processing and high-level application logic.
§Overview
Session-core coordinates SIP dialogs, media sessions, and call control operations while integrating with dialog-core (SIP protocol), media-core (audio processing), and providing APIs for higher-level applications.
§Quick Start
use rvoip_session_core::api::*;
use std::sync::Arc;
use std::net::SocketAddr;
// Create a session coordinator
let addr: SocketAddr = "127.0.0.1:15070".parse().unwrap();
let coordinator = SessionManagerBuilder::new()
.with_sip_port(15070)
.with_local_bind_addr(addr)
.with_media_ports(10000, 20000)
.build()
.await
.unwrap();
// Start accepting calls
SessionControl::start(&coordinator).await.unwrap();
§Network Configuration
§Bind Address Propagation
Session-core respects configured bind addresses and propagates them through all layers:
use rvoip_session_core::api::*;
use std::net::SocketAddr;
// Configure specific IP for production deployment
let addr: SocketAddr = "127.0.0.1:15071".parse().unwrap(); // Use localhost for test
let coordinator = SessionManagerBuilder::new()
.with_sip_port(15071)
.with_local_bind_addr(addr)
.with_media_ports(10000, 20000)
.build()
.await
.unwrap();
The configured IP propagates to dialog-core and transport layers. No more hardcoded 0.0.0.0 addresses when you specify an IP.
§Media Port Configuration
The library supports automatic port allocation when you use port 0:
use rvoip_session_core::api::*;
use std::net::SocketAddr;
// Port 0 signals automatic allocation from the configured range
let addr: SocketAddr = "127.0.0.1:0".parse().unwrap();
let coordinator = SessionManagerBuilder::new()
.with_local_bind_addr(addr) // Port 0 = auto
.with_media_ports(10000, 20000)
.build()
.await
.unwrap();
When port is 0:
- It means “allocate automatically when needed”
- Actual allocation happens when media sessions are created
- Uses the configured media_port_start to media_port_end range
- Each session gets unique ports from the pool
Re-exports§
pub use api::*;
Modules§
- api
- Public API for session-core
- bridge
- Bridge Module
- conference
- Conference Module for Session-Core
- coordination
- Session Coordination Module
- coordinator
- Top-level Session Coordinator
- dialog
- Session-Core Dialog Integration
- manager
- Session Manager Module
- media
- Session-Core Media Integration
- prelude
- sdp
- SDP Negotiation Module for session-core
- session
- Session Module
Enums§
- Session
Error - Main error type for session operations
Constants§
Functions§
- init
- Initialize the session core library
Type Aliases§
- Result
- Main result type for session operations