pub struct Dialog {Show 18 fields
pub id: DialogId,
pub state: DialogState,
pub call_id: String,
pub local_uri: Uri,
pub remote_uri: Uri,
pub local_tag: Option<String>,
pub remote_tag: Option<String>,
pub local_cseq: u32,
pub remote_cseq: u32,
pub remote_target: Uri,
pub route_set: Vec<Uri>,
pub is_initiator: bool,
pub last_known_remote_addr: Option<SocketAddr>,
pub last_successful_transaction_time: Option<SystemTime>,
pub recovery_attempts: u32,
pub recovery_reason: Option<String>,
pub recovered_at: Option<SystemTime>,
pub recovery_start_time: Option<SystemTime>,
}
Expand description
A SIP dialog as defined in RFC 3261
Fields§
§id: DialogId
Unique identifier for this dialog
state: DialogState
Current state of the dialog
call_id: String
Call-ID for this dialog
local_uri: Uri
Local URI
remote_uri: Uri
Remote URI
local_tag: Option<String>
Local tag
remote_tag: Option<String>
Remote tag
local_cseq: u32
Local sequence number
remote_cseq: u32
Remote sequence number
remote_target: Uri
Remote target URI (where to send requests)
route_set: Vec<Uri>
Route set for this dialog
is_initiator: bool
Whether this dialog was created by local UA (true) or remote UA (false)
last_known_remote_addr: Option<SocketAddr>
Last known good remote socket address
last_successful_transaction_time: Option<SystemTime>
Time of the last successful transaction
recovery_attempts: u32
Number of recovery attempts made
recovery_reason: Option<String>
Reason for recovery (if in recovering state)
recovered_at: Option<SystemTime>
Time when the dialog was last successfully recovered
recovery_start_time: Option<SystemTime>
Time when recovery was started
Implementations§
Source§impl Dialog
impl Dialog
Sourcepub fn new(
call_id: String,
local_uri: Uri,
remote_uri: Uri,
local_tag: Option<String>,
remote_tag: Option<String>,
is_initiator: bool,
) -> Self
pub fn new( call_id: String, local_uri: Uri, remote_uri: Uri, local_tag: Option<String>, remote_tag: Option<String>, is_initiator: bool, ) -> Self
Create a new dialog
Sourcepub fn new_early(
call_id: String,
local_uri: Uri,
remote_uri: Uri,
local_tag: Option<String>,
remote_tag: Option<String>,
is_initiator: bool,
) -> Self
pub fn new_early( call_id: String, local_uri: Uri, remote_uri: Uri, local_tag: Option<String>, remote_tag: Option<String>, is_initiator: bool, ) -> Self
Create a new early dialog
Sourcepub fn generate_local_tag(&self) -> String
pub fn generate_local_tag(&self) -> String
Generate a local tag for this dialog
Sourcepub fn confirm_with_tag(&mut self, local_tag: String)
pub fn confirm_with_tag(&mut self, local_tag: String)
Confirm the dialog with a local tag
Sourcepub fn update_remote_sequence(&mut self, request: &Request) -> DialogResult<()>
pub fn update_remote_sequence(&mut self, request: &Request) -> DialogResult<()>
Update remote sequence number from an incoming request
Sourcepub async fn get_remote_target_address(&self) -> Option<SocketAddr>
pub async fn get_remote_target_address(&self) -> Option<SocketAddr>
Get the remote target address (for sending requests)
Sourcepub fn from_2xx_response(
request: &Request,
response: &Response,
is_initiator: bool,
) -> Option<Self>
pub fn from_2xx_response( request: &Request, response: &Response, is_initiator: bool, ) -> Option<Self>
Create a dialog from a 2xx response to an INVITE
Sourcepub fn from_provisional_response(
request: &Request,
response: &Response,
is_initiator: bool,
) -> Option<Self>
pub fn from_provisional_response( request: &Request, response: &Response, is_initiator: bool, ) -> Option<Self>
Create a dialog from an early (1xx) response to an INVITE
Sourcepub fn create_request_template(
&mut self,
method: Method,
) -> DialogRequestTemplate
pub fn create_request_template( &mut self, method: Method, ) -> DialogRequestTemplate
Create a new request within this dialog
ARCHITECTURAL NOTE: This method creates a dialog-aware request template that should be processed by transaction-core helpers for proper RFC 3261 compliance. The DialogManager’s transaction integration layer handles the complete request creation.
Sourcepub fn dialog_id_tuple(&self) -> Option<(String, String, String)>
pub fn dialog_id_tuple(&self) -> Option<(String, String, String)>
Get the dialog ID tuple (Call-ID, local tag, remote tag)
Sourcepub fn update_from_2xx(&mut self, response: &Response) -> bool
pub fn update_from_2xx(&mut self, response: &Response) -> bool
Update dialog state from a 2xx response
Sourcepub fn is_terminated(&self) -> bool
pub fn is_terminated(&self) -> bool
Check if dialog is terminated
Sourcepub fn update_remote_address(&mut self, remote_addr: SocketAddr)
pub fn update_remote_address(&mut self, remote_addr: SocketAddr)
Update remote address tracking
Sourcepub fn set_remote_tag(&mut self, tag: String)
pub fn set_remote_tag(&mut self, tag: String)
Set the remote tag for this dialog
Updates the remote tag, typically when receiving a response with a to-tag. This is used during dialog state transitions and response processing.
Sourcepub fn enter_recovery_mode(&mut self, reason: &str)
pub fn enter_recovery_mode(&mut self, reason: &str)
Enter recovery mode
Sourcepub fn is_recovering(&self) -> bool
pub fn is_recovering(&self) -> bool
Check if dialog is in recovery mode
Sourcepub fn complete_recovery(&mut self) -> bool
pub fn complete_recovery(&mut self) -> bool
Complete recovery
Sourcepub fn increment_local_cseq(&mut self)
pub fn increment_local_cseq(&mut self)
Increment the local CSeq number
Used for sequence number management during dialog operations.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Dialog
impl<'de> Deserialize<'de> for Dialog
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>,
Auto Trait Implementations§
impl Freeze for Dialog
impl RefUnwindSafe for Dialog
impl Send for Dialog
impl Sync for Dialog
impl Unpin for Dialog
impl UnwindSafe for Dialog
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