Merge pull request #1494 from csoler/v0.6-FT

set default FT rate to some non zero value. Should start transfers faster. Needs testing!
This commit is contained in:
csoler 2019-03-17 21:39:37 +01:00 committed by GitHub
commit af0ce1013f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 44 additions and 45 deletions

View File

@ -47,31 +47,37 @@
const double FT_TM_MAX_PEER_RATE = 100 * 1024 * 1024; /* 100MB/s */ const double FT_TM_MAX_PEER_RATE = 100 * 1024 * 1024; /* 100MB/s */
const uint32_t FT_TM_MAX_RESETS = 5; const uint32_t FT_TM_MAX_RESETS = 5;
const uint32_t FT_TM_MINIMUM_CHUNK = 1024; /* ie 1Kb / sec */ const uint32_t FT_TM_MINIMUM_CHUNK = 1024; /* ie 1Kb / sec */
const uint32_t FT_TM_DEFAULT_TRANSFER_RATE = 20*1024; /* ie 20 Kb/sec */
const uint32_t FT_TM_RESTART_DOWNLOAD = 20; /* 20 seconds */ const uint32_t FT_TM_RESTART_DOWNLOAD = 20; /* 20 seconds */
const uint32_t FT_TM_DOWNLOAD_TIMEOUT = 10; /* 10 seconds */ const uint32_t FT_TM_DOWNLOAD_TIMEOUT = 10; /* 10 seconds */
//const uint32_t FT_TM_CRC_MAP_MAX_WAIT_PER_GIG = 20; /* 20 seconds per gigabyte */
// const double FT_TM_MAX_INCREASE = 1.00;
// const double FT_TM_MIN_INCREASE = -0.10;
const double FT_TM_RATE_INCREASE_SLOWER = 0.05 ; const double FT_TM_RATE_INCREASE_SLOWER = 0.05 ;
const double FT_TM_RATE_INCREASE_AVERAGE = 0.3 ; const double FT_TM_RATE_INCREASE_AVERAGE = 0.3 ;
const double FT_TM_RATE_INCREASE_FASTER = 1.0 ; const double FT_TM_RATE_INCREASE_FASTER = 1.0 ;
//const int32_t FT_TM_FAST_RTT = 1.0;
//const int32_t FT_TM_STD_RTT = 5.0;
//const int32_t FT_TM_SLOW_RTT = 20.0;
//const uint32_t FT_TM_CRC_MAP_STATE_NOCHECK = 0 ;
//const uint32_t FT_TM_CRC_MAP_STATE_DONT_HAVE = 1 ;
//const uint32_t FT_TM_CRC_MAP_STATE_HAVE = 2 ;
#define FT_TM_FLAG_DOWNLOADING 0 #define FT_TM_FLAG_DOWNLOADING 0
#define FT_TM_FLAG_CANCELED 1 #define FT_TM_FLAG_CANCELED 1
#define FT_TM_FLAG_COMPLETE 2 #define FT_TM_FLAG_COMPLETE 2
#define FT_TM_FLAG_CHECKING 3 #define FT_TM_FLAG_CHECKING 3
#define FT_TM_FLAG_CHUNK_CRC 4 #define FT_TM_FLAG_CHUNK_CRC 4
peerInfo::peerInfo(const RsPeerId& peerId_in)
:peerId(peerId_in),state(PQIPEER_NOT_ONLINE),desiredRate(FT_TM_DEFAULT_TRANSFER_RATE),actualRate(FT_TM_DEFAULT_TRANSFER_RATE),
lastTS(0),
recvTS(0), lastTransfers(0), nResets(0),
rtt(0), rttActive(false), rttStart(0), rttOffset(0),
mRateIncrease(1)
{
}
// peerInfo(const RsPeerId& peerId_in,uint32_t state_in,uint32_t maxRate_in):
// peerId(peerId_in),state(state_in),desiredRate(maxRate_in),actualRate(0),
// lastTS(0),
// recvTS(0), lastTransfers(0), nResets(0),
// rtt(0), rttActive(false), rttStart(0), rttOffset(0),
// mRateIncrease(1)
// {
// return;
// }
ftTransferModule::ftTransferModule(ftFileCreator *fc, ftDataMultiplex *dm, ftController *c) ftTransferModule::ftTransferModule(ftFileCreator *fc, ftDataMultiplex *dm, ftController *c)
:mFileCreator(fc), mMultiplexor(dm), mFtController(c), tfMtx("ftTransferModule"), mFlag(FT_TM_FLAG_DOWNLOADING),mPriority(SPEED_NORMAL) :mFileCreator(fc), mMultiplexor(dm), mFtController(c), tfMtx("ftTransferModule"), mFlag(FT_TM_FLAG_DOWNLOADING),mPriority(SPEED_NORMAL)
{ {

View File

@ -54,39 +54,32 @@ class HashThread ;
class peerInfo class peerInfo
{ {
public: public:
explicit peerInfo(const RsPeerId& peerId_in):peerId(peerId_in),state(PQIPEER_NOT_ONLINE),desiredRate(0),actualRate(0), explicit peerInfo(const RsPeerId& peerId_in);
lastTS(0),
recvTS(0), lastTransfers(0), nResets(0), // peerInfo(const RsPeerId& peerId_in,uint32_t state_in,uint32_t maxRate_in):
rtt(0), rttActive(false), rttStart(0), rttOffset(0), // peerId(peerId_in),state(state_in),desiredRate(maxRate_in),actualRate(0),
mRateIncrease(1) // lastTS(0),
{ // recvTS(0), lastTransfers(0), nResets(0),
return; // rtt(0), rttActive(false), rttStart(0), rttOffset(0),
} // mRateIncrease(1)
peerInfo(const RsPeerId& peerId_in,uint32_t state_in,uint32_t maxRate_in): // {
peerId(peerId_in),state(state_in),desiredRate(maxRate_in),actualRate(0), // return;
lastTS(0), // }
recvTS(0), lastTransfers(0), nResets(0),
rtt(0), rttActive(false), rttStart(0), rttOffset(0),
mRateIncrease(1)
{
return;
}
RsPeerId peerId; RsPeerId peerId;
uint32_t state; uint32_t state;
double desiredRate; double desiredRate; /* speed at which the data should be requested */
double actualRate; double actualRate; /* actual speed at which the data is received */
rstime_t lastTS; /* last Request */ rstime_t lastTS; /* last Request */
rstime_t recvTS; /* last Recv */ rstime_t recvTS; /* last Recv */
uint32_t lastTransfers; /* data recvd in last second */ uint32_t lastTransfers; /* data recvd in last second */
uint32_t nResets; /* count to disable non-existant files */ uint32_t nResets; /* count to disable non-existant files */
/* rrt rate control */
uint32_t rtt; /* last rtt */ uint32_t rtt; /* last rtt */
bool rttActive; /* have we initialised an rtt measurement */ bool rttActive; /* have we initialised an rtt measurement */
rstime_t rttStart; /* ts of request */ rstime_t rttStart; /* ts of request */
uint64_t rttOffset; /* end of request */ uint64_t rttOffset; /* end of request */
float mRateIncrease; /* current rate */ float mRateIncrease; /* current rate increase factor */
}; };
class ftFileStatus class ftFileStatus