亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ua_main.cpp

?? 改進后的SIP SERVICE API
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
    if(!strcmp(argv[argi], "-mp")) {
      L_manual_provisionning = 1;
    }

    if(!strcmp(argv[argi], "-cls")) {
      G_server_close = 1;
    }

    if(!strcmp(argv[argi], "-mp2ta")) {
      L_manual_provisionning = 1;
      G_multiple_ta = 1;
    }

#ifdef __hpux
    if(!strcmp(argv[argi], "-cpu")) {
      if((++argi) < argc) {
        if( mpctl(MPC_SETPROCESS_FORCE, atol(argv[argi]), MPC_SELFPID) == -1 )
          {
            printf("ERROR: mpctl() returned error: [%d]\n", errno);
            exit(1);
          }
	
        printf("mpctl(): process was properly locked on processor [%i]\n",
               atol(argv[argi]));
      } else {
        usage(argv[0],sip_local_ip);
        exit(1);
      }
    }
#endif //__hpux
    
    if(!strcmp(argv[argi], "-mgt")) {
      if((++argi) < argc) {
        strcpy(L_className,argv[argi]);
      } else {
        usage(argv[0],sip_local_ip);
        exit(1);
      }
    }
    if(!strcmp(argv[argi], "-lb")) {
      if((++argi) < argc) {
        L_numberOfUasCopies = atol(argv[argi]);
      } else {
        usage(argv[0],sip_local_ip);
        exit(1);
      }
    }

  }
  //得到本地的server,形式為"sip:service_name@IP_address:port"
  if(!strlen(LocalServer)) {
    sprintf(LocalServer, 
            "sip:%s@%s:%d", 
            G_service_username, 
            sip_local_ip, 
            G_portNumber);
  }
  //初始化ProbeManagerName
  if(!L_ProbeManagerName) {
    L_ProbeManagerName = L_className;
  }

  // Print info to screen.
  if (G_trace == 1) {
    printf("Using management classname '%s'.\n", L_className);
  }
  //初始化LogicalEntity
  if (std::string(L_role) == "UA" )  
    L_logicalEntity = SIP_LE_UA;
  if (std::string(L_role) == "B2BProxy" )  
    L_logicalEntity = SIP_LE_B2BPROXY;
  if (std::string(L_role) == "B2BController" ) 
    L_logicalEntity = SIP_LE_B2BCONTROLLER;

  // Parse local server and overides default if necessary
  //得到本地的URI
  sip_msg_uri_t* LocalServer_Uri = sip_msg_parse_uri(LocalServer, &L_error);
  if(!LocalServer_Uri) {
    std::cout <<"Syntax error near token \'"
              <<L_error.unexpected_token 
              << "\' in request URI\n" 
              << std::endl;
    usage(argv[0],sip_local_ip) ;
  } 
  //得到連接類型
  if ((LocalServer_Uri->content.sip_url.transport_param != 0) && 
      (strcmp(LocalServer_Uri->content.sip_url.transport_param,"tcp")==0)) {
    L_trpType = SIP_TRANSPORT_TCP;
  } else {
    L_trpType = SIP_TRANSPORT_UDP;
  }

  // Convert delays to nanoseconds
  G_sleep = G_sleep * 1000000000;
  L_delayBeforeActivate = L_delayBeforeActivate * 1000000000;

  // Start service
  //建立SIP_AppProbeManager對象,參數為L_ProbeManagerName
  std::auto_ptr<SIP_AppProbeManager>  L_appProbeManager
    (new SIP_AppProbeManager((const char*)L_ProbeManagerName));
  //建立SIP_ProbeManager對象,參數為SIP_AppProbeManager對象
  std::auto_ptr<SIP_ProbeManager>     
    L_ProbeManager(new SIP_ProbeManager(*L_appProbeManager));
  std::auto_ptr<SIP_Scheduler>        
    L_sipScheduler (new SIP_Scheduler);
  
  G_jamMachineTimeout.tv_sec = 0;
  G_jamMachineTimeout.tv_usec = 100000 ;
  
  for  (int k = 0; k<NUM_OF_TH; k++)
    pthread_id[k]=0;
  
  for (int i=0;i<L_nbProbe;i++)
    {
      //定義service  名字
      std::string L_serviceName = "Service_";
      snprintf(buffer,64,"%u",i);
      L_serviceName += buffer;
      //定義Probe  的名字
      std::string L_probeName = "Server_";
      L_probeName += buffer;
      
      std::string L_ffName;
      //定義SIP_Probe  與UA_AppProbe  的對象指針
      SIP_Probe*    L_probe = 0;
      UA_AppProbe* L_appProbe = 0;
      //初始化FF  的名字
      if (!(i % 1)) {
        L_ffName=param_ff;
      } else {
        L_ffName="ua_ff";
      }

      //建立UA_Service對象,參數為L_serviceName and L_ffName
      UA_Service* L_service = new 
        UA_Service(L_serviceName.c_str(),L_ffName.c_str());
      
      misc_provision(i,
                     L_className,
                     sip_appli_name,
                     (char *)L_probeName.c_str(),
                     G_stateless_messages,
                     L_destructive_mode,
                     L_trans_deleted_mode);
      
      G_service_username = LocalServer_Uri->content.sip_url.user;

      if (L_manual_provisionning) {
	  printf("in L_manual_provisionning");
	
        char probe_name[30]; 
        
        lp_provision(i,
                     L_className,
                     sip_appli_name,
                     (char *)L_probeName.c_str(),
                     LocalServer_Uri->content.sip_url.user);

        ta_provision(i,
                     L_className,
                     sip_appli_name,
                     (char *)L_probeName.c_str(),
                     LocalServer_Uri->content.sip_url.host,
                     LocalServer_Uri->content.sip_url.port + i,
                     L_trpType);

        if(G_multiple_ta) {
          ta_provision(i,
                       L_className,
                       sip_appli_name,
                       (char *)L_probeName.c_str(),
                       LocalServer_Uri->content.sip_url.host,
                       LocalServer_Uri->content.sip_url.port + i + 10,
                       L_trpType);
        }

        L_appProbe = new UA_AppProbe(L_probeName.c_str());

      } else {
       //建立UA_AppProbe對象
       printf("sipUserInfo = %s\n",LocalServer_Uri->content.sip_url.user);
        L_appProbe = new UA_AppProbe(L_probeName.c_str(),    //AppProbe name
                                     LocalServer_Uri->content.sip_url.user,//userInfo
                                     LocalServer_Uri->content.sip_url.host,
                                     LocalServer_Uri->content.sip_url.port + i,
                                     L_trpType,//tcp or udp
                                     L_logicalEntity);//UA or B2B proxy or B2B Controller
      }
      
      printf("Trying to bind probe [%s]... ", (L_appProbe->getName()).c_str());
      fflush(stdout);
      //綁定SIP_Probe 到SAP,SAP由UA_AppProbe指定
      L_probe = L_ProbeManager->bindProbe(*L_appProbe);
      if (L_probe == 0) {
        printf("Unable to bind Probe, please check port "
               "number and error log.\n");
        return -1;
      } else {
        printf("OK\n");
      }
      
      //L_appProbe->setProbe(*L_probe);
      //SIP_Service被定義為UA_AppProbe的成員
      L_appProbe->setService(*L_service);
      //把L_probe加入序列中,select進行管理
      L_sipScheduler->addProbeToBeScheduled(*L_probe); 
      //建立多個UA_AppProbe對象
      for (int j = 1; j<L_numberOfUasCopies;j++) {
        snprintf(buffer,64,"%u",j);
        L_appProbe = new UA_AppProbe(L_probeName.c_str(),
                                     (L_probeName + buffer).c_str());

        //L_appProbe->setProbe(*L_probe);
        L_appProbe->setService(*L_service);
	
        if (L_ProbeManager->bindProbe(*L_appProbe) == 0)
          {
            std::cout << "Unable to bind additional Probe a probe  ["
                      << L_appProbe->getName()<<"]"<< std::endl;
            return -1;
          }
      }
      
      if (L_noService == false)
        {
          L_probe->serviceAttach(*L_service);
        }

      if  (L_startbusy == true)
        {
          L_probe->stateChange(SIP_PROBE_BUSY);
        }
      else
        {
          L_probe->stateChange(SIP_PROBE_INACTIVE);
	   printf("stateChange SIP_PROBE_INACTIVE\n");
        }

      L_probeTab.push_back(L_appProbe);

    }
  //select系列函數
  time_v = gethrtime();
  hrtime_t L_startTime = gethrtime();
  hrtime_t L_timeBeforeSelect = 0;
  hrtime_t L_timeAfterSelect = 0;
  //主循環
  while (G_nfinishedCalls < L_nbcall)
    {
      int GI_maxFds;
      fd_set E_fdsread;
      fd_set E_fdswrite;
      fd_set E_fdsexcept; 
      timeval L_timeout;
	  
      int L_nb =0;

      L_timeout.tv_sec = 5;
      L_timeout.tv_usec = 0;
      FD_ZERO(&E_fdsread);
      FD_ZERO(&E_fdswrite);
      FD_ZERO(&E_fdsexcept);
      GI_maxFds = 0;
      GI_maxFds = L_sipScheduler->selectMasks(GI_maxFds, 
                                              &E_fdsread,
                                              &E_fdswrite,
                                              &E_fdsexcept,
                                              &L_timeout);

      if (GI_maxFds < 0)
        {
          printf("SelectMaks Failure\n");
          return -1;
        } 
        
      L_timeAfterSelect = gethrtime();
      if ((L_timeAfterSelect - L_timeBeforeSelect)< L_selectMinimalDelay)
        {
          L_timeBeforeSelect = gethrtime();
          select(0,0,0,0,&L_selectMinimalDelayForSelect);
        }
      else
        {
          L_timeBeforeSelect = gethrtime();  
          L_nb = select(GI_maxFds+1, 
                        &E_fdsread, 
                        &E_fdswrite,
                        &E_fdsexcept, 
                        &L_timeout);

          if (L_nb < 0) {
            printf( "Select Failure, errno: %d\n", errno);
            return -1;
          }
          L_sipScheduler->connectionHandler(L_nb, 
                                            &E_fdsread,
                                            &E_fdswrite,
                                            &E_fdsexcept,
                                            &L_timeout);
            
        }
        
      if ((gethrtime() - L_startTime) >= L_delayBeforeActivate)
        {
          UA_AppProbe* L_appProbe = L_probeTab[0];
          if (L_appProbe->getState() != SIP_PROBE_ACTIVE)
            L_appProbe->getProbe().stateChange(SIP_PROBE_ACTIVE);
            
            
          if (VB_client_mode) 
            {
              VB_client_mode = 0;
              if(G_cps) {
                // Multithreaded client mode
                if (pthread_id[0] == 0 )
                  for (int l = 0; l< L_nbSenderThread; l++)
                    {
                      if (pthread_create
                          (pthread_id + l,
                           NULL,
                           (void *(*)(void *)) jamMachine,
                           (void*)&G_blockingMode) 
                          == -1)
                        std::cout <<"Creation of the thread ["
                                  << pthread_id[l] 
                                  <<"] has failed\n"
                                  <<std::endl;
                      else
                        std::cout <<"Creation of the thread ["
                                  << pthread_id[l] 
                                  <<"] succeded\n"
                                  <<std::endl;
                    }
			
              } else {
          
                // Single client mode with one call
          
                if (L_appProbe->getState() != SIP_PROBE_ACTIVE)
                  L_appProbe->getProbe().stateChange(SIP_PROBE_ACTIVE);
          
                if(!G_stateless_bye) {
		    //發起呼叫
                  L_appProbe->initOrReinitSession(L_target,//called URI
                                                  &L_appProbe->getService(), //SIP_Service對象
                                                  NULL);
                } else {
                  L_appProbe->statelessRequest(L_target,
                                               &L_appProbe->getService(),
                                               SIP_MSG_BYE,
                                               NULL,
                                               (char *)"stateless_request");
                }
          
                if (G_trace == 1) {
                  std::cout << "New call initiated "
                            << pthread_self() <<std::endl;
                }
              }
            }
        }
	
      //Unbind at mid session
      if ( (L_unbindService == 1) && ( G_nfinishedCalls >= (L_nbcall/2) ) )
        {
          printf("Service mid session reach\n");
          SIP_Service& L_service = L_probeTab[0]->getService();
          SIP_Probe& L_probe = L_probeTab[0]->getProbe();
	  
          if (L_service.getState() == SIP_SERVICE_ACTIVE)
            {
              //detach the service
              L_probe.serviceDetach(L_service,SIP_SERVICE_GRACEFUL_DETACH);
              std::cout <<"Service   ["<<L_service.getName()<<
                "] is detaching"<< std::endl;

            }
#define NO_REBIND
#ifndef NO_REBIND
          if(L_service.getState() == SIP_SERVICE_IDLE) {
            L_probe.serviceAttach(L_service);
            std::cout << "Service   ["      << L_service.getName()
                      << "] is re-attached" << std::endl;
            L_unbindService = 0;
          }
#else
            L_unbindService = 0;
#endif
        }
      
      L_probeTabIterator = L_probeTab.begin();

      for (int i = 0; i < L_nbProbe;i++)	
        {

          while ( (!(*L_probeTabIterator)->callQueue.empty()) && 
                  ( (gethrtime() - 
                     (*((*L_probeTabIterator)->callQueue.begin()))
                     ->getConfirmedTime() ) > G_sleep ) )
            {
              if (G_trace >= 1) std::cerr << "== Entering while ( (!(*L_probeTabIterator)->callQueue.empty()) && " << std::endl;
              if(!G_reinvite) {
                printf("Closing Session...\n");
                (*L_probeTabIterator)->closeSession(**((*L_probeTabIterator)
                                                       ->callQueue.begin()));
                (*L_probeTabIterator)->callQueue.pop_front();
                G_nfinishedCalls++;
              } else {
                if (G_trace >= 1) std::cerr << "== Entering G_reinvite " << std::endl;
                std::string dummy_string;

                UA_Session * L_session = 
                  *((*L_probeTabIterator)->callQueue.begin());

                (*L_probeTabIterator)->initOrReinitSession
                  (dummy_string,
                   NULL,
                   *((*L_probeTabIterator)->callQueue.begin()));

                (*L_probeTabIterator)->callQueue.pop_front();

                G_reinvite = 0;
              }
            }
          L_probeTabIterator++;
        }
    }
  if (L_unbindAtTheEnd == 0)
    {
      printf("Undbinding probes...\n");
      while (!L_probeTab.empty())
        {
          L_ProbeManager->unbindProbe((*L_probeTab.begin())->getProbe());
          L_probeTab.erase(L_probeTab.begin());
        }
      
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频一二三区| 久久精品亚洲精品国产欧美| 亚洲激情自拍偷拍| 色噜噜狠狠成人网p站| 亚洲综合偷拍欧美一区色| 欧美午夜寂寞影院| 久久av老司机精品网站导航| 久久久久九九视频| 91香蕉视频污在线| 午夜a成v人精品| 日韩一区二区三区三四区视频在线观看| 日韩av一区二| 欧美国产视频在线| 在线观看视频一区| 激情综合网av| 亚洲免费在线观看视频| 在线电影欧美成精品| 懂色中文一区二区在线播放| 亚洲人成影院在线观看| 欧美一区二区在线视频| 国产麻豆精品95视频| 亚洲精品成人在线| 日韩三级电影网址| 99热99精品| 青青草国产成人av片免费| 国产精品麻豆欧美日韩ww| 欧美亚一区二区| 国产一区二区毛片| 亚洲国产综合91精品麻豆| 日韩免费看网站| 91黄色免费看| 国产69精品久久久久777| 亚洲高清免费视频| 国产精品乱码一区二区三区软件| 欧美日韩国产免费一区二区| 成人av影院在线| 美女爽到高潮91| 亚洲精品午夜久久久| 久久综合精品国产一区二区三区| 色婷婷激情一区二区三区| 国产乱人伦精品一区二区在线观看| 亚洲老司机在线| 久久精品人人做人人综合| 91 com成人网| 在线观看av一区| 波波电影院一区二区三区| 精油按摩中文字幕久久| 午夜日韩在线电影| 亚洲欧美视频在线观看| 国产欧美一区二区三区沐欲| 91精品国产高清一区二区三区| 91亚洲男人天堂| 国产福利一区二区三区视频| 日韩av网站免费在线| 尤物视频一区二区| 国产精品久久午夜| 国产亚洲欧美中文| 精品国产乱码久久久久久影片| 欧美日韩亚洲综合在线| 一本大道久久a久久综合婷婷| 国产精品系列在线观看| 国产麻豆视频精品| 久久99久久久欧美国产| 奇米在线7777在线精品 | 国产无人区一区二区三区| 欧美二区乱c少妇| 欧美日韩中文精品| 欧美性色黄大片| 欧美影院精品一区| 色综合色狠狠天天综合色| eeuss国产一区二区三区| 国产精品亚洲一区二区三区妖精| 韩国精品免费视频| 国产精品综合一区二区三区| 麻豆成人综合网| 久久66热偷产精品| 老司机精品视频线观看86| 日本在线不卡一区| 麻豆一区二区三| 国产呦精品一区二区三区网站| 久色婷婷小香蕉久久| 美女视频免费一区| 狠狠色伊人亚洲综合成人| 精品无码三级在线观看视频| 激情文学综合丁香| 国产成人福利片| 成人久久18免费网站麻豆| av不卡免费在线观看| 91九色02白丝porn| 777久久久精品| 精品国产伦一区二区三区观看方式| 欧美成人福利视频| 国产视频亚洲色图| 亚洲视频中文字幕| 午夜在线成人av| 久久不见久久见免费视频1| 国产成人免费视频网站高清观看视频| 国产一区二区视频在线播放| 成人av在线播放网址| 欧美综合视频在线观看| 欧美一级二级三级乱码| 久久亚洲欧美国产精品乐播| 国产精品美女久久久久久久久久久 | 黑人精品欧美一区二区蜜桃| 久久se精品一区二区| 不卡视频在线看| 欧美日韩国产综合草草| 欧美精品一区二区三区在线播放| 中文成人综合网| 午夜影院久久久| 成人一区在线看| 欧美日韩一区二区三区在线| 日韩精品专区在线影院观看| 国产精品家庭影院| 无码av免费一区二区三区试看| 精品一区二区三区av| 97se亚洲国产综合在线| 日韩视频在线你懂得| 国产精品久久久久永久免费观看| 亚洲超丰满肉感bbw| 福利电影一区二区| 在线不卡一区二区| 国产精品乱码人人做人人爱 | 日本亚洲三级在线| 9色porny自拍视频一区二区| 欧美一卡2卡三卡4卡5免费| 亚洲天堂精品在线观看| 久久99精品国产麻豆婷婷| 欧洲精品一区二区| 国产欧美精品一区| 免费看欧美女人艹b| 一本色道**综合亚洲精品蜜桃冫| 精品国偷自产国产一区| 午夜a成v人精品| 日本精品一级二级| 日本一区二区动态图| 精品一区二区三区欧美| 欧美日韩一卡二卡三卡| 亚洲欧美一区二区三区国产精品| 国产精品亚洲综合一区在线观看| 这里只有精品视频在线观看| 亚洲色图视频网| 豆国产96在线|亚洲| 久久亚洲私人国产精品va媚药| 日本成人在线网站| 欧美日韩日日骚| 亚洲男人的天堂在线观看| 国产成人av影院| 久久夜色精品国产欧美乱极品| 丝袜美腿高跟呻吟高潮一区| 日本韩国精品在线| 亚洲欧美另类久久久精品| 国产传媒欧美日韩成人| 精品国产3级a| 久久成人av少妇免费| 91精品欧美一区二区三区综合在 | 久久精品在这里| 黄色小说综合网站| 欧美成人精品福利| 美腿丝袜亚洲三区| 欧美一区二区三区日韩视频| 免费在线欧美视频| 欧美一级一区二区| 另类小说欧美激情| 欧美xxxxxxxx| 精品无人区卡一卡二卡三乱码免费卡| 日韩欧美一级二级三级久久久| 免费观看一级欧美片| 欧美一二三区精品| 日韩和欧美的一区| 日韩视频永久免费| 国产一区二区三区黄视频| 久久综合99re88久久爱| 国产一区二区精品久久| 日本一区二区免费在线观看视频 | 欧美视频在线观看一区| 日日摸夜夜添夜夜添亚洲女人| 7777精品伊人久久久大香线蕉的| 免费在线观看一区| 久久精品欧美一区二区三区不卡 | 色婷婷激情综合| 天天色 色综合| 日韩精品一区二区三区三区免费| 国产精品一线二线三线精华| 中文一区二区在线观看| 91视频免费看| 天天综合色天天综合| 精品国产一区二区亚洲人成毛片 | 午夜婷婷国产麻豆精品| 日韩欧美一区电影| 粉嫩蜜臀av国产精品网站| 亚洲视频在线观看一区| 欧美另类一区二区三区| 国产米奇在线777精品观看| 国产精品不卡在线观看| 欧美三级视频在线| 韩国女主播一区| 中文字幕五月欧美| 正在播放亚洲一区| eeuss鲁片一区二区三区|