- initial import

This commit is contained in:
2018-06-05 11:05:37 +03:00
commit e1a4931375
4673 changed files with 1383093 additions and 0 deletions

113
src/libs/ice/ICETime.h Normal file
View File

@@ -0,0 +1,113 @@
/* Copyright(C) 2007-2014 VoIP objects (voipobjects.com)
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef __ICE_TIME_H
#define __ICE_TIME_H
#include "ICEPlatform.h"
#include "ICETypes.h"
#ifndef _WIN32
# include <time.h>
# include <stdlib.h>
#endif
namespace ice {
class TimeoutDetector
{
public:
TimeoutDetector();
~TimeoutDetector();
void start();
void stop();
/*! Resets the countdown. */
void reset();
/*! Checks if it is a time to retransmit non-answered packet
* @return true if time to retransmit packet, false if not. */
bool isTimeToRetransmit();
/*! Notifies timer about retransmission. */
void nextAttempt();
/*! Checks if it is a time to mark the transaction timeouted.
* @return true if transaction is timeouted, false if not. */
bool isTimeout();
protected:
/// Time tracking member
time_t mTimestamp;
/// Retransmission attempt counter
size_t mAttempt;
};
class ICEStartTimer
{
public:
ICEStartTimer();
~ICEStartTimer();
void start(unsigned interval);
bool isTimeToBegin();
void stop();
protected:
unsigned mTimestamp;
unsigned mInterval;
bool mEnabled;
};
/*! Class intendend to schedule connectivity checks. It is simple timer which returns true from IsTimeToSend() every interval milliseconds. */
class ICEScheduleTimer
{
public:
/*! Default constructor. */
ICEScheduleTimer();
/*! Destructor. */
~ICEScheduleTimer();
/*! Start timer with interval in milliseconds. */
void start(int interval);
/*! Check if it is a time to send next check. This method must be called in while (IsTimeToSend()) {} loop -
* as multiple checks can be scheduled for elapsed time interval. */
bool isTimeToSend();
/*! Stops timer. */
void stop();
/*! Returns remaining time in milliseconds. */
int remaining();
/*! Returns interval time in milliseconds. */
int interval() const;
/*! Sets new interval time in milliseconds. Can be called on active timer, will reschedule timeout event. */
void setInterval(int interval);
protected:
bool mEnabled; /// Marks if timer is started
unsigned mTimestamp; /// Last timestamp
int mTail; /// How much checks was scheduled for elapsed time interval.
int mInterval; /// Timer interval
};
class ICETimeHelper
{
public:
static unsigned timestamp();
static unsigned findDelta(unsigned oldTimestamp, unsigned int newTimestamp);
};
};
#endif