Class SipTransactionContext

java.lang.Object
io.github.lunasaw.sip.common.context.SipTransactionContext

public class SipTransactionContext extends Object
SIP事务上下文管理器 通过ThreadLocal管理完整的SIP事务上下文,包括Call-ID、CSeq、From/To头部等 确保请求-响应-ACK整个链路使用相同的事务参数

支持两种模式: 1. 显式模式:通过setRequestEvent直接设置原始请求事件,自动提取事务参数 2. 隐式模式:通过setTransactionInfo设置完整事务信息,在消息处理链路中自动传递

Author:
luna
  • 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

      public static void setTransactionInfo(SipTransactionContext.SipTransactionInfo transactionInfo)
      设置完整事务信息(隐式模式) 通常在AbstractSipListener中自动调用
      Parameters:
      transactionInfo - 完整事务信息
    • setCallId

      public static void setCallId(String callId)
      设置Call-ID(隐式模式 - 向后兼容) 在消息处理器中自动调用,无需业务代码干预
      Parameters:
      callId - Call-ID
    • getCurrentTransactionInfo

      public static SipTransactionContext.SipTransactionInfo getCurrentTransactionInfo()
      获取当前线程的完整事务信息 优先级:显式模式的RequestEvent > 隐式模式的TransactionInfo
      Returns:
      完整事务信息,如果不存在则返回null
    • getCurrentCallId

      public static String getCurrentCallId()
      获取当前线程的Call-ID 优先级:显式模式的RequestEvent > 隐式模式的Call-ID
      Returns:
      Call-ID,如果不存在则返回null
    • hasActiveTransaction

      public static boolean hasActiveTransaction()
      检查是否存在活跃的SIP事务上下文
      Returns:
      true如果存在活跃的事务上下文
    • getCurrentTransactionType

      public static SipTransactionContext.TransactionType 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

      public static void restore(SipTransactionContext.TransactionSnapshot snapshot)
      从快照恢复事务上下文
      Parameters:
      snapshot - 事务上下文快照
    • getDebugInfo

      public static String getDebugInfo()
      获取当前事务上下文的调试信息
      Returns:
      调试信息字符串