Class SipTransactionContext
java.lang.Object
io.github.lunasaw.sip.common.context.SipTransactionContext
SIP事务上下文管理器
通过ThreadLocal管理完整的SIP事务上下文,包括Call-ID、CSeq、From/To头部等
确保请求-响应-ACK整个链路使用相同的事务参数
支持两种模式: 1. 显式模式:通过setRequestEvent直接设置原始请求事件,自动提取事务参数 2. 隐式模式:通过setTransactionInfo设置完整事务信息,在消息处理链路中自动传递
- Author:
- luna
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
SIP事务完整信息 包含事务匹配所需的所有关键信息static class
事务上下文快照,用于线程间传递static enum
事务类型枚举 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic void
clear()
清理当前线程的事务上下文 建议在处理完成后调用,避免内存泄漏static String
获取当前线程的Call-ID 优先级:显式模式的RequestEvent > 隐式模式的Call-ID获取当前线程的完整事务信息 优先级:显式模式的RequestEvent > 隐式模式的TransactionInfo获取当前事务类型static String
获取当前事务上下文的调试信息static javax.sip.RequestEvent
获取原始请求事件static boolean
检查是否存在活跃的SIP事务上下文static boolean
检查是否为显式事务模式static boolean
检查是否为隐式事务模式static void
从快照恢复事务上下文static void
设置Call-ID(隐式模式 - 向后兼容) 在消息处理器中自动调用,无需业务代码干预static void
setRequestEvent
(javax.sip.RequestEvent requestEvent) 设置原始请求事件(显式模式) 自动提取完整的事务信息static void
setTransactionInfo
(SipTransactionContext.SipTransactionInfo transactionInfo) 设置完整事务信息(隐式模式) 通常在AbstractSipListener中自动调用snapshot()
复制事务上下文到新线程 用于异步处理时传递事务上下文
-
Constructor Details
-
SipTransactionContext
public SipTransactionContext()
-
-
Method Details
-
setRequestEvent
public static void setRequestEvent(javax.sip.RequestEvent requestEvent) 设置原始请求事件(显式模式) 自动提取完整的事务信息- Parameters:
requestEvent
- 原始请求事件
-
getRequestEvent
public static javax.sip.RequestEvent getRequestEvent()获取原始请求事件- Returns:
- 原始请求事件,如果不存在则返回null
-
setTransactionInfo
设置完整事务信息(隐式模式) 通常在AbstractSipListener中自动调用- Parameters:
transactionInfo
- 完整事务信息
-
setCallId
设置Call-ID(隐式模式 - 向后兼容) 在消息处理器中自动调用,无需业务代码干预- Parameters:
callId
- Call-ID
-
getCurrentTransactionInfo
获取当前线程的完整事务信息 优先级:显式模式的RequestEvent > 隐式模式的TransactionInfo- Returns:
- 完整事务信息,如果不存在则返回null
-
getCurrentCallId
获取当前线程的Call-ID 优先级:显式模式的RequestEvent > 隐式模式的Call-ID- Returns:
- Call-ID,如果不存在则返回null
-
hasActiveTransaction
public static boolean hasActiveTransaction()检查是否存在活跃的SIP事务上下文- Returns:
- true如果存在活跃的事务上下文
-
getCurrentTransactionType
获取当前事务类型- Returns:
- 事务类型,如果不存在则返回null
-
isExplicitTransaction
public static boolean isExplicitTransaction()检查是否为显式事务模式- Returns:
- true如果为显式事务模式
-
isImplicitTransaction
public static boolean isImplicitTransaction()检查是否为隐式事务模式- Returns:
- true如果为隐式事务模式
-
clear
public static void clear()清理当前线程的事务上下文 建议在处理完成后调用,避免内存泄漏 -
snapshot
复制事务上下文到新线程 用于异步处理时传递事务上下文- Returns:
- 事务上下文快照
-
restore
从快照恢复事务上下文- Parameters:
snapshot
- 事务上下文快照
-
getDebugInfo
获取当前事务上下文的调试信息- Returns:
- 调试信息字符串
-