⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ua_session.cpp

📁 改进后的SIP SERVICE API
💻 CPP
字号:
#include <iostream>
#include <UA_Session.hpp>
#include <stdexcept>
#include <stdio.h>

extern int G_trace;
extern int G_silent;

#ifdef __linux__
extern hrtime_t gethrtime();
#endif

unsigned long G_session_created = 0;
unsigned long G_session_closed = 0;

UA_Session::UA_Session () 
  : state(CALL_INITIAL), 
  reqUri(0),
  confirmedTime(0),
  service(0),
  providerCallId(-2),
  providerDialogId(-2)
{
  if (G_trace == 1)
    std::cerr << "--UA_Session::UA_Session [ptr = 0x"
              << (void *)this << "]" <<std::endl;

  G_session_created++;

  if(!(G_session_created%1000)) {
    printf("%lu created sessions, %lu closed sessions, %lu open sessions.\n",
           G_session_created,
           G_session_closed,
           G_session_created - G_session_closed);
  }

  if(!G_silent) {
    printf("Session created\n");
  }
}


UA_Session::~UA_Session()
{
  if (G_trace == 1)
    std::cerr << "--UA_Session::~UA_Session [ptr = 0x"
              << (void *)this << "]" <<std::endl;

  G_session_closed++;

  if(!G_silent) {
    printf("Session deleted\n");
  }
}


const UA_Session::CallState UA_Session::getState () const
{
  return state;
}

void UA_Session::setState (UA_Session::CallState value)
{
if (G_trace >= 1) std::cerr << "== Entering setState" << std::endl;
  state = value;
  if (value == CALL_CONFIRMED)
    setConfirmedTime(gethrtime());
}

const sip_msg_uri_t* UA_Session::getReqUri () const
{
  return reqUri;
}

void UA_Session::setReqUri (sip_msg_uri_t* value)
{
  if (G_trace >= 1) std::cerr << "== Entering setReqUri" << std::endl;
  reqUri = value;
}

void UA_Session::setService(SIP_Service& P_service) throw()
{
if (G_trace >= 1) std::cerr << "== Entering setService" << std::endl;
  service = &P_service;
}

SIP_Service& UA_Session::getService() throw (std::exception)
{
  if (service)
    return *service;
  else
    throw std::runtime_error("service not set");
}

hrtime_t UA_Session::getConfirmedTime()
{
  return confirmedTime;
}

void UA_Session::setConfirmedTime(hrtime_t P_time)
{
  if (G_trace >= 1) std::cerr << "== Entering setConfirmedTime" << std::endl;
  confirmedTime = P_time;
}

void UA_Session::storeProviderId(FF_SipMessageContainer& P_message)
{
  providerCallId = P_message.getCallId().getProviderIdentifier();
  providerDialogId = P_message.getDialogId().getProviderIdentifier();
  providerSubscriptionId = 
    P_message.getSubscriptionId().getProviderIdentifier();
}
int UA_Session::getProviderCallId()
{
  return providerCallId;
}

int UA_Session::getProviderDialogId()
{
  return providerDialogId;
}

int UA_Session::getProviderSubscriptionId()
{
  return providerSubscriptionId;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -