diff options
Diffstat (limited to 'libtransport/src/hicn/transport/protocols')
20 files changed, 67 insertions, 61 deletions
diff --git a/libtransport/src/hicn/transport/protocols/CMakeLists.txt b/libtransport/src/hicn/transport/protocols/CMakeLists.txt index 1c3b76c24..1c3b76c24 100755..100644 --- a/libtransport/src/hicn/transport/protocols/CMakeLists.txt +++ b/libtransport/src/hicn/transport/protocols/CMakeLists.txt diff --git a/libtransport/src/hicn/transport/protocols/cbr.cc b/libtransport/src/hicn/transport/protocols/cbr.cc index 3da4819c3..3da4819c3 100755..100644 --- a/libtransport/src/hicn/transport/protocols/cbr.cc +++ b/libtransport/src/hicn/transport/protocols/cbr.cc diff --git a/libtransport/src/hicn/transport/protocols/cbr.h b/libtransport/src/hicn/transport/protocols/cbr.h index 0a572292a..0a572292a 100755..100644 --- a/libtransport/src/hicn/transport/protocols/cbr.h +++ b/libtransport/src/hicn/transport/protocols/cbr.h diff --git a/libtransport/src/hicn/transport/protocols/consumer.conf b/libtransport/src/hicn/transport/protocols/consumer.conf index 1a366f32f..1a366f32f 100755..100644 --- a/libtransport/src/hicn/transport/protocols/consumer.conf +++ b/libtransport/src/hicn/transport/protocols/consumer.conf diff --git a/libtransport/src/hicn/transport/protocols/download_observer.h b/libtransport/src/hicn/transport/protocols/download_observer.h index 6d24fe6fd..6d24fe6fd 100755..100644 --- a/libtransport/src/hicn/transport/protocols/download_observer.h +++ b/libtransport/src/hicn/transport/protocols/download_observer.h diff --git a/libtransport/src/hicn/transport/protocols/protocol.cc b/libtransport/src/hicn/transport/protocols/protocol.cc index ea4fd6dbf..ea4fd6dbf 100755..100644 --- a/libtransport/src/hicn/transport/protocols/protocol.cc +++ b/libtransport/src/hicn/transport/protocols/protocol.cc diff --git a/libtransport/src/hicn/transport/protocols/protocol.h b/libtransport/src/hicn/transport/protocols/protocol.h index 56c57e025..56c57e025 100755..100644 --- a/libtransport/src/hicn/transport/protocols/protocol.h +++ b/libtransport/src/hicn/transport/protocols/protocol.h diff --git a/libtransport/src/hicn/transport/protocols/raaqm.cc b/libtransport/src/hicn/transport/protocols/raaqm.cc index cd22ecfdc..cd22ecfdc 100755..100644 --- a/libtransport/src/hicn/transport/protocols/raaqm.cc +++ b/libtransport/src/hicn/transport/protocols/raaqm.cc diff --git a/libtransport/src/hicn/transport/protocols/raaqm.h b/libtransport/src/hicn/transport/protocols/raaqm.h index 6ca410251..6ca410251 100755..100644 --- a/libtransport/src/hicn/transport/protocols/raaqm.h +++ b/libtransport/src/hicn/transport/protocols/raaqm.h diff --git a/libtransport/src/hicn/transport/protocols/raaqm_data_path.cc b/libtransport/src/hicn/transport/protocols/raaqm_data_path.cc index f876cf4f8..2e7aa531a 100755..100644 --- a/libtransport/src/hicn/transport/protocols/raaqm_data_path.cc +++ b/libtransport/src/hicn/transport/protocols/raaqm_data_path.cc @@ -42,10 +42,9 @@ RaaqmDataPath::RaaqmDataPath(double drop_factor, raw_data_bytes_received_(0), last_raw_data_bytes_received_(0), rtt_samples_(samples_), + last_received_pkt_(std::chrono::steady_clock::now()), average_rtt_(0), - alpha_(ALPHA) { - gettimeofday(&m_last_received_pkt_, 0); -} + alpha_(ALPHA) {} RaaqmDataPath &RaaqmDataPath::insertNewRtt(uint64_t new_rtt) { rtt_ = new_rtt; @@ -59,7 +58,7 @@ RaaqmDataPath &RaaqmDataPath::insertNewRtt(uint64_t new_rtt) { prop_delay_ = rtt_min_; } - gettimeofday(&m_last_received_pkt_, 0); + last_received_pkt_ = std::chrono::steady_clock::now(); return *this; } @@ -144,9 +143,9 @@ bool RaaqmDataPath::newPropagationDelayAvailable() { unsigned int RaaqmDataPath::getPropagationDelay() { return prop_delay_; } bool RaaqmDataPath::isStale() { - struct timeval now; - gettimeofday(&now, 0); - double time = getMicroSeconds(now) - getMicroSeconds(m_last_received_pkt_); + TimePoint now = std::chrono::steady_clock::now(); + auto time = std::chrono::duration_cast<Microseconds>(now - last_received_pkt_) + .count(); if (time > 2000000) { return true; } diff --git a/libtransport/src/hicn/transport/protocols/raaqm_data_path.h b/libtransport/src/hicn/transport/protocols/raaqm_data_path.h index 6f63940c9..a0b9ec9ca 100755..100644 --- a/libtransport/src/hicn/transport/protocols/raaqm_data_path.h +++ b/libtransport/src/hicn/transport/protocols/raaqm_data_path.h @@ -17,7 +17,7 @@ #include <hicn/transport/utils/min_filter.h> -#include <sys/time.h> +#include <chrono> #include <climits> #include <iostream> @@ -30,6 +30,9 @@ namespace transport { namespace protocol { class RaaqmDataPath { + using TimePoint = std::chrono::steady_clock::time_point; + using Microseconds = std::chrono::microseconds; + public: RaaqmDataPath(double drop_factor, double minimum_drop_probability, unsigned new_timer, unsigned int samples, @@ -219,7 +222,7 @@ class RaaqmDataPath { /** * Time of the last call to the path reporter method */ - struct timeval m_last_received_pkt_; + TimePoint last_received_pkt_; double average_rtt_; double alpha_; diff --git a/libtransport/src/hicn/transport/protocols/rate_estimation.cc b/libtransport/src/hicn/transport/protocols/rate_estimation.cc index e313bf9f6..b603ec200 100755..100644 --- a/libtransport/src/hicn/transport/protocols/rate_estimation.cc +++ b/libtransport/src/hicn/transport/protocols/rate_estimation.cc @@ -16,6 +16,8 @@ #include <hicn/transport/protocols/rate_estimation.h> #include <hicn/transport/utils/log.h> +#include <thread> + namespace transport { namespace protocol { @@ -31,7 +33,8 @@ void *Timer(void *data) { pthread_mutex_unlock(&(estimator->mutex_)); while (estimator->is_running_) { - usleep(KV * dat_rtt); + std::this_thread::sleep_for( + std::chrono::microseconds((uint64_t)(KV * dat_rtt))); pthread_mutex_lock(&(estimator->mutex_)); @@ -88,8 +91,8 @@ InterRttEstimator::InterRttEstimator(double alpha_arg) { this->win_current_ = 1.0; pthread_mutex_init(&(this->mutex_), NULL); - gettimeofday(&(this->start_time_), 0); - gettimeofday(&(this->begin_batch_), 0); + this->start_time_ = std::chrono::steady_clock::now(); + this->begin_batch_ = std::chrono::steady_clock::now(); } InterRttEstimator::~InterRttEstimator() { @@ -124,10 +127,10 @@ void InterRttEstimator::onRttUpdate(double rtt) { } void InterRttEstimator::onWindowIncrease(double win_current) { - timeval end; - gettimeofday(&end, 0); - double delay = RaaqmDataPath::getMicroSeconds(end) - - RaaqmDataPath::getMicroSeconds(this->begin_batch_); + TimePoint end = std::chrono::steady_clock::now(); + auto delay = + std::chrono::duration_cast<Microseconds>(end - this->begin_batch_) + .count(); pthread_mutex_lock(&(this->mutex_)); this->avg_win_ += this->win_current_ * delay; @@ -135,14 +138,14 @@ void InterRttEstimator::onWindowIncrease(double win_current) { this->win_change_ += delay; pthread_mutex_unlock(&(this->mutex_)); - gettimeofday(&(this->begin_batch_), 0); + this->begin_batch_ = std::chrono::steady_clock::now(); } void InterRttEstimator::onWindowDecrease(double win_current) { - timeval end; - gettimeofday(&end, 0); - double delay = RaaqmDataPath::getMicroSeconds(end) - - RaaqmDataPath::getMicroSeconds(this->begin_batch_); + TimePoint end = std::chrono::steady_clock::now(); + auto delay = + std::chrono::duration_cast<Microseconds>(end - this->begin_batch_) + .count(); pthread_mutex_lock(&(this->mutex_)); this->avg_win_ += this->win_current_ * delay; @@ -150,26 +153,25 @@ void InterRttEstimator::onWindowDecrease(double win_current) { this->win_change_ += delay; pthread_mutex_unlock(&(this->mutex_)); - gettimeofday(&(this->begin_batch_), 0); + this->begin_batch_ = std::chrono::steady_clock::now(); } ALaTcpEstimator::ALaTcpEstimator() { this->estimation_ = 0.0; this->observer_ = NULL; - gettimeofday(&(this->start_time_), 0); + this->start_time_ = std::chrono::steady_clock::now(); this->totalSize_ = 0.0; } void ALaTcpEstimator::onStart() { this->totalSize_ = 0.0; - gettimeofday(&(this->start_time_), 0); + this->start_time_ = std::chrono::steady_clock::now(); } void ALaTcpEstimator::onDownloadFinished() { - timeval end; - gettimeofday(&end, 0); - double delay = RaaqmDataPath::getMicroSeconds(end) - - RaaqmDataPath::getMicroSeconds(this->start_time_); + TimePoint end = std::chrono::steady_clock::now(); + auto delay = + std::chrono::duration_cast<Microseconds>(end - this->start_time_).count(); this->estimation_ = this->totalSize_ * 8 * 1000000 / delay; if (observer_) { observer_->notifyStats(this->estimation_); @@ -189,23 +191,22 @@ SimpleEstimator::SimpleEstimator(double alphaArg, int batching_param) { this->number_of_packets_ = 0; this->base_alpha_ = alphaArg; this->alpha_ = alphaArg; - gettimeofday(&(this->start_time_), 0); - gettimeofday(&(this->begin_batch_), 0); + this->start_time_ = std::chrono::steady_clock::now(); + this->begin_batch_ = std::chrono::steady_clock::now(); } void SimpleEstimator::onStart() { this->estimated_ = false; this->number_of_packets_ = 0; this->total_size_ = 0.0; - gettimeofday(&(this->begin_batch_), 0); - gettimeofday(&(this->start_time_), 0); + this->start_time_ = std::chrono::steady_clock::now(); + this->begin_batch_ = std::chrono::steady_clock::now(); } void SimpleEstimator::onDownloadFinished() { - timeval end; - gettimeofday(&end, 0); - double delay = RaaqmDataPath::getMicroSeconds(end) - - RaaqmDataPath::getMicroSeconds(this->start_time_); + TimePoint end = std::chrono::steady_clock::now(); + auto delay = + std::chrono::duration_cast<Microseconds>(end - this->start_time_).count(); if (observer_) { observer_->notifyDownloadTime(delay); } @@ -227,8 +228,8 @@ void SimpleEstimator::onDownloadFinished() { } else { if (this->number_of_packets_ >= (int)(75.0 * (double)this->batching_param_ / 100.0)) { - delay = RaaqmDataPath::getMicroSeconds(end) - - RaaqmDataPath::getMicroSeconds(this->begin_batch_); + delay = std::chrono::duration_cast<Microseconds>(end - this->begin_batch_) + .count(); // Assuming all packets carry max_packet_size_ bytes of data // (8*max_packet_size_ bits); 1000000 factor to convert us to seconds if (this->estimation_) { @@ -247,8 +248,8 @@ void SimpleEstimator::onDownloadFinished() { } this->number_of_packets_ = 0; this->total_size_ = 0.0; - gettimeofday(&(this->begin_batch_), 0); - gettimeofday(&(this->start_time_), 0); + this->start_time_ = std::chrono::steady_clock::now(); + this->begin_batch_ = std::chrono::steady_clock::now(); } void SimpleEstimator::onDataReceived(int packet_size) { @@ -259,10 +260,10 @@ void SimpleEstimator::onRttUpdate(double rtt) { this->number_of_packets_++; if (number_of_packets_ == this->batching_param_) { - timeval end; - gettimeofday(&end, 0); - double delay = RaaqmDataPath::getMicroSeconds(end) - - RaaqmDataPath::getMicroSeconds(this->begin_batch_); + TimePoint end = std::chrono::steady_clock::now(); + auto delay = + std::chrono::duration_cast<Microseconds>(end - this->begin_batch_) + .count(); // Assuming all packets carry max_packet_size_ bytes of data // (8*max_packet_size_ bits); 1000000 factor to convert us to seconds if (this->estimation_) { @@ -278,7 +279,7 @@ void SimpleEstimator::onRttUpdate(double rtt) { this->alpha_ = this->base_alpha_; this->number_of_packets_ = 0; this->total_size_ = 0.0; - gettimeofday(&(this->begin_batch_), 0); + this->begin_batch_ = std::chrono::steady_clock::now(); } } @@ -295,8 +296,8 @@ BatchingPacketsEstimator::BatchingPacketsEstimator(double alpha_arg, this->max_packet_size_ = 0; this->estimation_ = 0.0; this->win_current_ = 1.0; - gettimeofday(&(this->begin_batch_), 0); - gettimeofday(&(this->start_time_), 0); + this->begin_batch_ = std::chrono::steady_clock::now(); + this->start_time_ = std::chrono::steady_clock::now(); } void BatchingPacketsEstimator::onRttUpdate(double rtt) { @@ -327,25 +328,25 @@ void BatchingPacketsEstimator::onRttUpdate(double rtt) { } void BatchingPacketsEstimator::onWindowIncrease(double win_current) { - timeval end; - gettimeofday(&end, 0); - double delay = RaaqmDataPath::getMicroSeconds(end) - - RaaqmDataPath::getMicroSeconds(this->begin_batch_); + TimePoint end = std::chrono::steady_clock::now(); + auto delay = + std::chrono::duration_cast<Microseconds>(end - this->begin_batch_) + .count(); this->avg_win_ += this->win_current_ * delay; this->win_current_ = win_current; this->win_change_ += delay; - gettimeofday(&(this->begin_batch_), 0); + this->begin_batch_ = std::chrono::steady_clock::now(); } void BatchingPacketsEstimator::onWindowDecrease(double win_current) { - timeval end; - gettimeofday(&end, 0); - double delay = RaaqmDataPath::getMicroSeconds(end) - - RaaqmDataPath::getMicroSeconds(this->begin_batch_); + TimePoint end = std::chrono::steady_clock::now(); + auto delay = + std::chrono::duration_cast<Microseconds>(end - this->begin_batch_) + .count(); this->avg_win_ += this->win_current_ * delay; this->win_current_ = win_current; this->win_change_ += delay; - gettimeofday(&(this->begin_batch_), 0); + this->begin_batch_ = std::chrono::steady_clock::now(); } } // end namespace protocol diff --git a/libtransport/src/hicn/transport/protocols/rate_estimation.h b/libtransport/src/hicn/transport/protocols/rate_estimation.h index b889efe12..91964ec1d 100755..100644 --- a/libtransport/src/hicn/transport/protocols/rate_estimation.h +++ b/libtransport/src/hicn/transport/protocols/rate_estimation.h @@ -15,11 +15,11 @@ #pragma once -#include <unistd.h> - #include <hicn/transport/protocols/download_observer.h> #include <hicn/transport/protocols/raaqm_data_path.h> +#include <chrono> + #define BATCH 50 #define KV 20 #define ALPHA 0.8 @@ -31,6 +31,9 @@ namespace protocol { class IcnRateEstimator { public: + using TimePoint = std::chrono::steady_clock::time_point; + using Microseconds = std::chrono::microseconds; + IcnRateEstimator(){}; virtual ~IcnRateEstimator(){}; @@ -51,8 +54,8 @@ class IcnRateEstimator { this->observer_ = observer; }; IcnObserver *observer_; - struct timeval start_time_; - struct timeval begin_batch_; + TimePoint start_time_; + TimePoint begin_batch_; double base_alpha_; double alpha_; double estimation_; diff --git a/libtransport/src/hicn/transport/protocols/rtc.h b/libtransport/src/hicn/transport/protocols/rtc.h index 249af6b99..249af6b99 100755..100644 --- a/libtransport/src/hicn/transport/protocols/rtc.h +++ b/libtransport/src/hicn/transport/protocols/rtc.h diff --git a/libtransport/src/hicn/transport/protocols/rtc_data_path.cc b/libtransport/src/hicn/transport/protocols/rtc_data_path.cc index 6c9605fb2..6c9605fb2 100755..100644 --- a/libtransport/src/hicn/transport/protocols/rtc_data_path.cc +++ b/libtransport/src/hicn/transport/protocols/rtc_data_path.cc diff --git a/libtransport/src/hicn/transport/protocols/test/CMakeLists.txt b/libtransport/src/hicn/transport/protocols/test/CMakeLists.txt index 6f9fdb9aa..6f9fdb9aa 100755..100644 --- a/libtransport/src/hicn/transport/protocols/test/CMakeLists.txt +++ b/libtransport/src/hicn/transport/protocols/test/CMakeLists.txt diff --git a/libtransport/src/hicn/transport/protocols/test/test_transport_producer.cc b/libtransport/src/hicn/transport/protocols/test/test_transport_producer.cc index 204f2cbe2..204f2cbe2 100755..100644 --- a/libtransport/src/hicn/transport/protocols/test/test_transport_producer.cc +++ b/libtransport/src/hicn/transport/protocols/test/test_transport_producer.cc diff --git a/libtransport/src/hicn/transport/protocols/vegas.h b/libtransport/src/hicn/transport/protocols/vegas.h index 7791ffc94..7791ffc94 100755..100644 --- a/libtransport/src/hicn/transport/protocols/vegas.h +++ b/libtransport/src/hicn/transport/protocols/vegas.h diff --git a/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.cc b/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.cc index f5f797bbe..f5f797bbe 100755..100644 --- a/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.cc +++ b/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.cc diff --git a/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.h b/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.h index e84afc49c..e84afc49c 100755..100644 --- a/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.h +++ b/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.h |