📄 sipretransmitmanager.cxx
字号:
#include "SIPRetransmitManager.h"namespace msip{ //---------------------------------------------------------------------------------- RetransmitManager::RetransmitManager(long t1, long t2, double exp_val) : tr_T1(t1), tr_T2(t2), tr_Exp(exp_val), tr_Interval(t1), tr_Status(trIdle) { } //---------------------------------------------------------------------------------- void RetransmitManager::setTimeoutValues(long t1, long t2, double exp_val) { tr_T1 = t1; tr_T2 = t2; tr_Exp = exp_val; } //---------------------------------------------------------------------------------- void RetransmitManager::start() { tr_Interval = tr_T1; tr_Timer1.setInterval(long(tr_Interval)); tr_Timer2.setInterval(tr_T2); tr_Status = trPending; } //---------------------------------------------------------------------------------- void RetransmitManager::cancel() { tr_Status = trIdle; } //---------------------------------------------------------------------------------- RetransmitManager::Status RetransmitManager::poll() { Status st = tr_Status; if(tr_Status == trPending) { Timer tm; tm.setCurrent(); if(tr_Timer2.outOfInterval(tm)) { st = tr_Status = trTimeoutReached; } else { if(tr_Timer1.outOfInterval(tm)) { tr_Interval = int(tr_Interval * tr_Exp); tr_Timer1.setInterval(long(tr_Interval)); st = trTransmitIndicated; } } } return st; } //---------------------------------------------------------------------------------- long RetransmitManager::getTimeLeft() const { long interval = 0x7FFFFFFFl; //MAX_LONG if(tr_Status == trPending) { interval = tr_Timer1.getInterval(); if(interval < 0) interval = 0; } return interval; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -