ARC SDK
Public Types | Public Member Functions
Arc::DataSpeed Class Reference

Keeps track of average and instantaneous transfer speed. More...

#include <arc/data/DataSpeed.h>

Public Types

typedef void(* show_progress_t) (FILE *o, const char *s, unsigned int t, unsigned long long int all, unsigned long long int max, double instant, double average)
 Callback for output of transfer status. More...
 

Public Member Functions

 DataSpeed (time_t base=DATASPEED_AVERAGING_PERIOD)
 Constructor. More...
 
 DataSpeed (unsigned long long int min_speed, time_t min_speed_time, unsigned long long int min_average_speed, time_t max_inactivity_time, time_t base=DATASPEED_AVERAGING_PERIOD)
 Constructor. More...
 
 ~DataSpeed ()
 Destructor. More...
 
void verbose (bool val)
 Set true to activate printing transfer information during transfer. More...
 
void verbose (const std::string &prefix)
 Activate printing transfer information using 'prefix' at the beginning of every string. More...
 
bool verbose ()
 Check if speed information is going to be printed. More...
 
void set_min_speed (unsigned long long int min_speed, time_t min_speed_time)
 Set minimal allowed speed in bytes per second. More...
 
void set_min_average_speed (unsigned long long int min_average_speed)
 Set minimal average speed in bytes per second. More...
 
void set_max_inactivity_time (time_t max_inactivity_time)
 Set inactivity timeout. More...
 
time_t get_max_inactivity_time ()
 Get inactivity timeout. More...
 
void set_base (time_t base_=DATASPEED_AVERAGING_PERIOD)
 Set averaging time period (default 1 minute). More...
 
void set_max_data (unsigned long long int max=0)
 Set amount of data (in bytes) to be transferred. Used in verbose messages. More...
 
void set_progress_indicator (show_progress_t func=NULL)
 Specify an external function to print verbose messages. More...
 
void reset ()
 Reset all counters and triggers. More...
 
bool transfer (unsigned long long int n=0)
 Inform object that an amount of data has been transferred. More...
 
void hold (bool disable)
 Turn and off off speed control. More...
 
bool min_speed_failure ()
 Check if minimal speed error was triggered. More...
 
bool min_average_speed_failure ()
 Check if minimal average speed error was triggered. More...
 
bool max_inactivity_time_failure ()
 Check if maximal inactivity time error was triggered. More...
 
unsigned long long int transferred_size ()
 Returns number of bytes transferred so far (this object knows about). More...
 

Detailed Description

Keeps track of average and instantaneous transfer speed.

Also detects data transfer inactivity and other transfer timeouts.

Member Typedef Documentation

◆ show_progress_t

typedef void(* Arc::DataSpeed::show_progress_t) (FILE *o, const char *s, unsigned int t, unsigned long long int all, unsigned long long int max, double instant, double average)

Callback for output of transfer status.

A function with this signature can be passed to set_progress_indicator() to enable user-defined output of transfer progress.

Parameters
oFILE object connected to stderr
sprefix set in verbose(const std::string&)
ttime in seconds since the start of the transfer
allnumber of bytes transferred so far
maxtotal amount of bytes to be transferred (set in set_max_data())
instantinstantaneous transfer rate in bytes per second
averageaverage transfer rate in bytes per second

Constructor & Destructor Documentation

◆ DataSpeed() [1/2]

Arc::DataSpeed::DataSpeed ( time_t  base = DATASPEED_AVERAGING_PERIOD)

Constructor.

Parameters
basetime period used to average values (default 1 minute).

◆ DataSpeed() [2/2]

Arc::DataSpeed::DataSpeed ( unsigned long long int  min_speed,
time_t  min_speed_time,
unsigned long long int  min_average_speed,
time_t  max_inactivity_time,
time_t  base = DATASPEED_AVERAGING_PERIOD 
)

Constructor.

Parameters
min_speedminimal allowed speed (bytes per second). If speed drops and holds below threshold for min_speed_time seconds error is triggered.
min_speed_timetime over which to calculate min_speed.
min_average_speedminimal average speed (bytes per second) to trigger error. Averaged over whole current transfer time.
max_inactivity_timeif no data is passing for specified amount of time, error is triggered.
basetime period used to average values (default 1 minute).

◆ ~DataSpeed()

Arc::DataSpeed::~DataSpeed ( )

Destructor.

Member Function Documentation

◆ get_max_inactivity_time()

time_t Arc::DataSpeed::get_max_inactivity_time ( )
inline

Get inactivity timeout.

◆ hold()

void Arc::DataSpeed::hold ( bool  disable)

Turn and off off speed control.

◆ max_inactivity_time_failure()

bool Arc::DataSpeed::max_inactivity_time_failure ( )
inline

Check if maximal inactivity time error was triggered.

◆ min_average_speed_failure()

bool Arc::DataSpeed::min_average_speed_failure ( )
inline

Check if minimal average speed error was triggered.

◆ min_speed_failure()

bool Arc::DataSpeed::min_speed_failure ( )
inline

Check if minimal speed error was triggered.

◆ reset()

void Arc::DataSpeed::reset ( )

Reset all counters and triggers.

◆ set_base()

void Arc::DataSpeed::set_base ( time_t  base_ = DATASPEED_AVERAGING_PERIOD)

Set averaging time period (default 1 minute).

◆ set_max_data()

void Arc::DataSpeed::set_max_data ( unsigned long long int  max = 0)

Set amount of data (in bytes) to be transferred. Used in verbose messages.

◆ set_max_inactivity_time()

void Arc::DataSpeed::set_max_inactivity_time ( time_t  max_inactivity_time)

Set inactivity timeout.

Parameters
max_inactivity_time- if no data is passing for specified amount of time, error is triggered.

◆ set_min_average_speed()

void Arc::DataSpeed::set_min_average_speed ( unsigned long long int  min_average_speed)

Set minimal average speed in bytes per second.

Parameters
min_average_speedminimal average speed (bytes per second) to trigger error. Averaged over whole current transfer time.

◆ set_min_speed()

void Arc::DataSpeed::set_min_speed ( unsigned long long int  min_speed,
time_t  min_speed_time 
)

Set minimal allowed speed in bytes per second.

Parameters
min_speedminimal allowed speed (bytes per second). If speed drops and holds below threshold for min_speed_time seconds error is triggered.
min_speed_timetime over which to calculate min_speed.

◆ set_progress_indicator()

void Arc::DataSpeed::set_progress_indicator ( show_progress_t  func = NULL)

Specify an external function to print verbose messages.

If not specified an internal function is used.

Parameters
funcpointer to function which prints information.

◆ transfer()

bool Arc::DataSpeed::transfer ( unsigned long long int  n = 0)

Inform object that an amount of data has been transferred.

All errors are triggered by this method. To make them work the application must call this method periodically even with zero value.

Parameters
namount of data transferred in bytes.
Returns
false if transfer rate is below limits

◆ transferred_size()

unsigned long long int Arc::DataSpeed::transferred_size ( )
inline

Returns number of bytes transferred so far (this object knows about).

◆ verbose() [1/3]

void Arc::DataSpeed::verbose ( bool  val)

Set true to activate printing transfer information during transfer.

◆ verbose() [2/3]

void Arc::DataSpeed::verbose ( const std::string &  prefix)

Activate printing transfer information using 'prefix' at the beginning of every string.

◆ verbose() [3/3]

bool Arc::DataSpeed::verbose ( )

Check if speed information is going to be printed.


The documentation for this class was generated from the following file: