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

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

?? h323neg.cxx

?? mgcp協議源代碼。支持多種編碼:g711
?? CXX
?? 第 1 頁 / 共 3 頁
字號:
/* * h323neg.cxx * * H.323 PDU definitions * * Open H323 Library * * Copyright (c) 1998-2000 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Open H323 Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions of this code were written with the assisance of funding from * Vovida Networks, Inc. http://www.vovida.com. * * Contributor(s): ______________________________________. * * $Log: h323neg.cxx,v $ * Revision 1.35  2000/07/14 09:00:48  robertj * Fixed race condition in closing connection and explicit close logical channel. * * Revision 1.34  2000/07/11 19:31:28  robertj * Fixed possible deadlock under unix when trying to restart running TCS. * * Revision 1.33  2000/07/10 16:04:01  robertj * Added TCS=0 support. * Fixed bug where negotiations hang if not fast start and tunnelled but remot does not tunnel. * * Revision 1.32  2000/07/09 14:57:54  robertj * Fixed bug where don't accept TCS if supplied sequence number is zero. * * Revision 1.31  2000/07/04 13:00:36  craigs * Fixed problem with selecting large and small video sizes * * Revision 1.30  2000/07/04 04:15:41  robertj * Fixed capability check of "combinations" for fast start cases. * * Revision 1.29  2000/07/03 00:38:40  robertj * Fixed deadlock caused by nested mutex waits in negotiated channel closing. * * Revision 1.28  2000/06/27 03:46:52  robertj * Fixed another possible race condition on logical channel closure. * * Revision 1.27  2000/06/03 03:16:39  robertj * Fixed using the wrong capability table (should be connections) for some operations. * * Revision 1.26  2000/05/23 11:32:37  robertj * Rewrite of capability table to combine 2 structures into one and move functionality into that class *    allowing some normalisation of usage across several applications. * Changed H323Connection so gets a copy of capabilities instead of using endponts, allows adjustments *    to be done depending on the remote client application. * * Revision 1.25  2000/05/22 07:32:51  craigs * Fixed problem with ohphone silence detection hanging * * Revision 1.24  2000/05/16 08:13:42  robertj * Added function to find channel by session ID, supporting H323Connection::FindChannel() with mutex. * * Revision 1.23  2000/05/11 04:19:45  robertj * Fixed typo * * Revision 1.22  2000/05/11 04:16:35  robertj * Fixed missing timeout (and typo!) in bidirectional open logical channel. * * Revision 1.21  2000/05/08 05:06:27  robertj * Fixed bug in H.245 close logical channel timeout, thanks XuPeili. * * Revision 1.20  2000/05/05 04:35:10  robertj * Changed where the system timer is sampled to minimise overhead in round trip delay calculation. * * Revision 1.19  2000/05/02 04:32:27  robertj * Fixed copyright notice comment. * * Revision 1.18  2000/04/24 23:47:01  robertj * Fixed bug in master/slave negotiator for if have "in sync" random number generators, thanks Shawn Sincoski. * * Revision 1.17  2000/04/10 17:50:28  robertj * Fixed yet another race condition needing mutex in logical channels management class. * * Revision 1.16  2000/04/05 03:17:31  robertj * Added more RTP statistics gathering and H.245 round trip delay calculation. * * Revision 1.15  2000/03/29 02:14:46  robertj * Changed TerminationReason to CallEndReason to use correct telephony nomenclature. * Added CallEndReason for capability exchange failure. * * Revision 1.14  2000/03/25 02:19:50  robertj * Fixed missing mutex call in some logical channels structure access. * * Revision 1.13  2000/02/17 12:07:43  robertj * Used ne wPWLib random number generator after finding major problem in MSVC rand(). * * Revision 1.12  1999/11/26 01:25:01  craigs * Removed deadlock when remote endpoint requests unsupported channel type * * Revision 1.11  1999/11/19 09:07:27  robertj * Fixed bug allocating incorrect channel number to fast start transmit channel. * * Revision 1.10  1999/11/06 11:00:18  robertj * Fixed race condition in explicit channel close and connection close. * * Revision 1.9  1999/11/06 05:37:45  robertj * Complete rewrite of termination of connection to avoid numerous race conditions. * * Revision 1.8  1999/10/30 12:34:47  robertj * Added information callback for closed logical channel on H323EndPoint. * * Revision 1.7  1999/10/24 04:45:14  robertj * Removed requirement that must be sending capability set to receive capability set. * * Revision 1.6  1999/09/21 14:10:41  robertj * Fixed incorrect PTRACING test and removed uneeded include of videoio.h * * Revision 1.5  1999/09/15 01:26:27  robertj * Changed capability set call backs to have more specific class as parameter. * * Revision 1.4  1999/09/14 14:26:17  robertj * Added more debug tracing. * * Revision 1.3  1999/09/08 04:05:49  robertj * Added support for video capabilities & codec, still needs the actual codec itself! * * Revision 1.2  1999/08/31 12:34:19  robertj * Added gatekeeper support. * * Revision 1.1  1999/08/25 05:08:14  robertj * File fission (critical mass reached). * */#include <ptlib.h>#include <ptclib/random.h>#include "h323neg.h"#define new PNEW///////////////////////////////////////////////////////////////////////////////H245Negotiator::H245Negotiator(H323EndPoint & end, H323Connection & conn)  : endpoint(end),    connection(conn){  replyTimer.SetNotifier(PCREATE_NOTIFIER(HandleTimeout));}void H245Negotiator::HandleTimeout(PTimer &, INT){}/////////////////////////////////////////////////////////////////////////////H245NegMasterSlaveDetermination::H245NegMasterSlaveDetermination(H323EndPoint & end,                                                                 H323Connection & conn)  : H245Negotiator(end, conn){  retryCount = 1;  state = e_Idle;  status = e_Indeterminate;}BOOL H245NegMasterSlaveDetermination::Start(){  PWaitAndSignal wait(mutex);  retryCount = 1;  return Restart();}BOOL H245NegMasterSlaveDetermination::Restart(){  PTRACE(3, "H245\tSending MasterSlaveDetermination");  // Begin the Master/Slave determination procedure  determinationNumber = PRandom::Number()%16777216;  replyTimer = endpoint.GetMasterSlaveDeterminationTimeout();  state = e_Outgoing;  H323ControlPDU pdu;  pdu.BuildMasterSlaveDetermination(endpoint.GetTerminalType(), determinationNumber);  return connection.WriteControlPDU(pdu);}void H245NegMasterSlaveDetermination::Stop(){  PWaitAndSignal wait(mutex);  PTRACE(3, "H245\tStopping MasterSlaveDetermination: state=" << state);  if (state == e_Idle)    return;  replyTimer.Stop();  state = e_Idle;}BOOL H245NegMasterSlaveDetermination::HandleIncoming(const H245_MasterSlaveDetermination & pdu){  PWaitAndSignal wait(mutex);  PTRACE(3, "H245\tReceived MasterSlaveDetermination: state=" << state);  if (state == e_Incoming) {    replyTimer.Stop();    state = e_Idle;    return connection.OnControlProtocolError(H323Connection::e_MasterSlaveDetermination,                                             "Duplicate MasterSlaveDetermination");  }  replyTimer = endpoint.GetMasterSlaveDeterminationTimeout();  // Determine the master and slave  MasterSlaveStatus newStatus;  if (pdu.m_terminalType < (unsigned)endpoint.GetTerminalType())    newStatus = e_DeterminedMaster;  else if (pdu.m_terminalType > (unsigned)endpoint.GetTerminalType())    newStatus = e_DeterminedSlave;  else if (pdu.m_statusDeterminationNumber < determinationNumber) {    if ((determinationNumber - pdu.m_statusDeterminationNumber) > 8388608)      newStatus = e_DeterminedMaster;    else      newStatus = e_DeterminedSlave;  }  else if (pdu.m_statusDeterminationNumber > determinationNumber) {    if ((pdu.m_statusDeterminationNumber - determinationNumber) > 8388608)      newStatus = e_DeterminedSlave;    else      newStatus = e_DeterminedMaster;  }  else    newStatus = e_Indeterminate;  H323ControlPDU reply;  if (newStatus != e_Indeterminate) {    PTRACE(2, "H245\tMasterSlaveDetermination: local is "                  << (newStatus == e_DeterminedMaster ? "master" : "slave"));    reply.BuildMasterSlaveDeterminationAck(newStatus == e_DeterminedMaster);    state = e_Incoming;    status = newStatus;  }  else if (state == e_Outgoing) {    retryCount++;    if (retryCount < endpoint.GetMasterSlaveDeterminationRetries())      return Restart(); // Try again    replyTimer.Stop();    state = e_Idle;    return connection.OnControlProtocolError(H323Connection::e_MasterSlaveDetermination,                                             "Retries exceeded");  }  else {    reply.BuildMasterSlaveDeterminationReject(H245_MasterSlaveDeterminationReject_cause::e_identicalNumbers);  }  return connection.WriteControlPDU(reply);}BOOL H245NegMasterSlaveDetermination::HandleAck(const H245_MasterSlaveDeterminationAck & pdu){  PWaitAndSignal wait(mutex);  PTRACE(3, "H245\tReceived MasterSlaveDeterminationAck: state=" << state);  if (state == e_Idle)    return TRUE;  replyTimer = endpoint.GetMasterSlaveDeterminationTimeout();  MasterSlaveStatus newStatus;  if (pdu.m_decision.GetTag() == H245_MasterSlaveDeterminationAck_decision::e_master)    newStatus = e_DeterminedMaster;  else    newStatus = e_DeterminedSlave;  H323ControlPDU reply;  if (state == e_Outgoing) {    status = newStatus;    PTRACE(2, "H245\tMasterSlaveDetermination: remote is "                  << (newStatus == e_DeterminedSlave ? "master" : "slave"));    reply.BuildMasterSlaveDeterminationAck(newStatus == e_DeterminedMaster);    if (!connection.WriteControlPDU(reply))      return FALSE;  }  replyTimer.Stop();  state = e_Idle;  if (status != newStatus)    return connection.OnControlProtocolError(H323Connection::e_MasterSlaveDetermination,                                             "Master/Slave mismatch");  return TRUE;}BOOL H245NegMasterSlaveDetermination::HandleReject(const H245_MasterSlaveDeterminationReject & pdu){  PWaitAndSignal wait(mutex);  PTRACE(3, "H245\tReceived MasterSlaveDeterminationReject: state=" << state);  switch (state) {    case e_Idle :      return TRUE;    case e_Outgoing :      if (pdu.m_cause.GetTag() == H245_MasterSlaveDeterminationReject_cause::e_identicalNumbers) {        retryCount++;        if (retryCount < endpoint.GetMasterSlaveDeterminationRetries())          return Restart();      }    default :      break;  }  replyTimer.Stop();  state = e_Idle;  return connection.OnControlProtocolError(H323Connection::e_MasterSlaveDetermination,                                           "Retries exceeded");}BOOL H245NegMasterSlaveDetermination::HandleRelease(const H245_MasterSlaveDeterminationRelease & /*pdu*/){  PWaitAndSignal wait(mutex);  PTRACE(3, "H245\tReceived MasterSlaveDeterminationRelease: state=" << state);  if (state == e_Idle)    return TRUE;  replyTimer.Stop();  state = e_Idle;  return connection.OnControlProtocolError(H323Connection::e_MasterSlaveDetermination,                                           "Aborted");}void H245NegMasterSlaveDetermination::HandleTimeout(PTimer &, INT){  PWaitAndSignal wait(mutex);  PTRACE(3, "H245\tTimeout on MasterSlaveDetermination: state=" << state);  if (state == e_Outgoing) {    H323ControlPDU reply;    reply.Build(H245_IndicationMessage::e_masterSlaveDeterminationRelease);    connection.WriteControlPDU(reply);  }  state = e_Idle;  connection.OnControlProtocolError(H323Connection::e_MasterSlaveDetermination,                                    "Timeout");}#if PTRACINGconst char * const H245NegMasterSlaveDetermination::StateNames[] = {  "Idle", "Outgoing", "Incoming"};const char * const H245NegMasterSlaveDetermination::StatusNames[] = {  "Indeterminate", "DeterminedMaster", "DeterminedSlave"};#endif/////////////////////////////////////////////////////////////////////////////H245NegTerminalCapabilitySet::H245NegTerminalCapabilitySet(H323EndPoint & end,                                                           H323Connection & conn)  : H245Negotiator(end, conn){  inSequenceNumber = UINT_MAX;  outSequenceNumber = 0;  state = e_Idle;  receivedCapabilites = FALSE;}BOOL H245NegTerminalCapabilitySet::Start(){  if (state == e_InProgress) {    PTRACE(3, "H245\tTerminalCapabilitySet already in progress: outSeq=" << outSequenceNumber);    return TRUE;  }  PWaitAndSignal wait(mutex);  // Begin the capability exchange procedure  outSequenceNumber = (outSequenceNumber+1)%256;  replyTimer = endpoint.GetCapabilityExchangeTimeout();  state = e_InProgress;  PTRACE(3, "H245\tSending TerminalCapabilitySet: outSeq=" << outSequenceNumber);  H323ControlPDU pdu;  connection.OnSendCapabilitySet(pdu.BuildTerminalCapabilitySet(connection, outSequenceNumber));  return connection.WriteControlPDU(pdu);}void H245NegTerminalCapabilitySet::Stop(){  PWaitAndSignal wait(mutex);  PTRACE(3, "H245\tStopping TerminalCapabilitySet: state=" << state);  if (state == e_Idle)    return;  replyTimer.Stop();  state = e_Idle;  receivedCapabilites = FALSE;}BOOL H245NegTerminalCapabilitySet::HandleIncoming(const H245_TerminalCapabilitySet & pdu){  PWaitAndSignal wait(mutex);  PTRACE(3, "H245\tReceived TerminalCapabilitySet:"                     " state=" << state <<                     " pduSeq=" << pdu.m_sequenceNumber <<                     " inSeq=" << inSequenceNumber);  if (pdu.m_sequenceNumber == inSequenceNumber) {    PTRACE(3, "H245\tIgnoring TerminalCapabilitySet, already received sequence number");    return TRUE;  // Already had this one  }  inSequenceNumber = pdu.m_sequenceNumber;  receivedCapabilites = TRUE;  H323Capabilities remoteCapabilities(connection, pdu);  const H245_MultiplexCapability * muxCap = NULL;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品高清视频在线观看| 日韩精品免费视频人成| 欧美精品丝袜中出| 国产精品一区二区三区网站| 亚洲精品日日夜夜| 国产精品三级av在线播放| 9191精品国产综合久久久久久| 99国产欧美久久久精品| 蜜桃av一区二区在线观看| 亚洲女女做受ⅹxx高潮| 久久久国产精品午夜一区ai换脸| 欧美久久一区二区| 在线欧美日韩国产| www.亚洲人| 国产福利一区二区| 韩国v欧美v日本v亚洲v| 午夜精品久久久久久久蜜桃app| 国产精品每日更新在线播放网址| 久久伊人中文字幕| 日韩精品在线一区二区| 欧美另类变人与禽xxxxx| 成人av集中营| 高清成人免费视频| 国产精品自拍网站| 国内一区二区在线| 另类小说视频一区二区| 天堂在线亚洲视频| 午夜精品免费在线观看| 天堂久久一区二区三区| 丝袜美腿一区二区三区| 天天av天天翘天天综合网| 亚洲综合成人在线| 亚洲自拍都市欧美小说| 亚洲自拍偷拍麻豆| 亚洲成a人片在线不卡一二三区 | 欧美日韩一区 二区 三区 久久精品| 成人av网址在线| 99re8在线精品视频免费播放| 国产91精品免费| 成人免费视频一区| av在线不卡观看免费观看| 成人黄色网址在线观看| 99在线精品观看| 色www精品视频在线观看| 91极品视觉盛宴| 精品视频全国免费看| 欧美日韩免费高清一区色橹橹 | 亚洲成人午夜影院| 亚洲成av人片www| 日本伊人午夜精品| 美女视频一区二区| 韩国毛片一区二区三区| 成人免费观看av| 色综合 综合色| 欧美日韩久久不卡| www国产精品av| 日本一区二区三区在线观看| 亚洲日本va午夜在线电影| 亚洲一区二区精品视频| 日韩高清在线不卡| 国产大陆亚洲精品国产| 波多野结衣中文字幕一区| 色94色欧美sute亚洲线路二| 欧美日本一区二区三区四区| 精品国产一区二区三区av性色| 久久新电视剧免费观看| 中文一区二区在线观看| 亚洲午夜一区二区三区| 免费不卡在线观看| 99久久夜色精品国产网站| 欧美在线制服丝袜| 精品国产91久久久久久久妲己| 国产精品美女久久久久aⅴ| 亚洲成a人在线观看| 欧美久久久久中文字幕| 精品国产网站在线观看| 中文字幕日韩精品一区| 五月天婷婷综合| 风间由美一区二区三区在线观看| 91久久国产最好的精华液| 久久综合99re88久久爱| 亚洲精品免费在线播放| 久久精品国产99国产精品| 91社区在线播放| 欧美成人性战久久| 一区二区三区四区在线免费观看| 久久国产精品一区二区| 色妹子一区二区| 久久综合久久久久88| 亚洲综合视频在线观看| 处破女av一区二区| 日韩一级高清毛片| 亚洲三级在线观看| 国产麻豆精品久久一二三| 在线观看成人小视频| 久久精品亚洲精品国产欧美kt∨ | 一本到不卡精品视频在线观看| 日韩精品专区在线影院重磅| 一区二区三区日韩在线观看| 国内外精品视频| 欧美唯美清纯偷拍| 国产精品国产自产拍高清av| 久久精品99国产精品日本| 在线视频综合导航| 欧美激情一区二区| 国产一区在线精品| 欧美一区二区三区思思人| 一区二区在线观看视频在线观看| 国产成人午夜高潮毛片| 日韩精品一区二区三区在线观看 | 久久国产日韩欧美精品| 欧美视频一区二区三区在线观看| 中文字幕日韩欧美一区二区三区| 国精品**一区二区三区在线蜜桃| 91精品国产入口在线| 亚洲在线视频网站| 99re视频精品| 亚洲私人影院在线观看| av电影在线观看一区| 国产婷婷色一区二区三区在线| 蜜桃av噜噜一区二区三区小说| 9191国产精品| 人人超碰91尤物精品国产| 欧美日韩在线播| 日韩精品电影一区亚洲| 亚洲精品欧美综合四区| 国产精品99久| 久久久久久久久99精品| 激情综合色播五月| 日韩亚洲欧美一区二区三区| 婷婷成人激情在线网| 欧美中文字幕一区二区三区| 亚洲欧美日韩电影| 91麻豆免费在线观看| 亚洲三级免费观看| 欧美专区日韩专区| 亚洲成av人**亚洲成av**| 欧美日韩国产另类不卡| 天天亚洲美女在线视频| 欧美一级欧美一级在线播放| 日本不卡一区二区三区| 日韩视频一区二区| 激情综合色丁香一区二区| 久久久久久久久久久久久久久99| 国产精品中文字幕日韩精品| 久久九九久精品国产免费直播| 国产91精品免费| 亚洲欧美另类在线| 欧美视频自拍偷拍| 中文字幕在线不卡| 91美女在线视频| 午夜视频在线观看一区| 日韩一区二区电影| 国产精品系列在线观看| 自拍偷拍国产亚洲| 欧美日韩成人一区二区| 秋霞国产午夜精品免费视频| 久久综合色婷婷| 久久久久久一级片| 成人综合婷婷国产精品久久蜜臀 | 欧美久久久久久久久中文字幕| 日本亚洲最大的色成网站www| 欧美成人精品福利| 成人午夜av在线| 亚洲综合免费观看高清完整版在线| 欧美日本一区二区三区四区| 国产尤物一区二区在线| 亚洲乱码精品一二三四区日韩在线| 欧美精选在线播放| 国产黄色精品网站| 亚洲国产日韩av| 亚洲精品在线免费观看视频| 99久久综合99久久综合网站| 婷婷综合久久一区二区三区| 国产视频视频一区| 欧美日韩中文字幕一区| 国产制服丝袜一区| 一区二区在线观看不卡| 欧美成人猛片aaaaaaa| 色综合欧美在线| 国内成+人亚洲+欧美+综合在线 | 国产精品久久国产精麻豆99网站| 欧美三级电影精品| 国产激情视频一区二区在线观看| 亚洲第一福利一区| 国产精品网站在线观看| 91麻豆精品国产自产在线观看一区 | 日韩欧美亚洲另类制服综合在线| av日韩在线网站| 热久久国产精品| 成人av免费观看| 黄色日韩网站视频| 亚洲一级二级在线| 欧美国产日韩精品免费观看| 日韩视频在线观看一区二区| 91久久精品日日躁夜夜躁欧美| 国产成+人+日韩+欧美+亚洲| 天天综合网天天综合色| 亚洲美腿欧美偷拍| 国产偷国产偷亚洲高清人白洁|