4
0
mirror of https://github.com/QuasarApp/SoundBand.git synced 2025-05-06 12:09:34 +00:00

calc ping for sync

This commit is contained in:
Andrei Yankovich 2018-01-14 15:49:26 +03:00
parent cd62c20e97
commit d3d7cf66ff
3 changed files with 21 additions and 11 deletions

@ -17,11 +17,10 @@
#define DEFAULT_NRTWORK 0 // the network number from which the address will be taken.
#define LOCAL_HOST "127.0.0.1"
#define DEFAULT_PORT 1994
#define MAX_SYNC_TIME 20 * 1000 // 10 sec on millisec
#define RESYNC_TIME 1000 // 1 sec on millisec
#define MAX_RESYNC_COUNT 3
#define SYNC_TIME 5 * 1000 // 5 sec on millisec
#define DEEP_SCANER_INTERVAL 10000 // 10 sec
#define DEEP_SCANER_INTERVAL 1000 // 1 sec
#define CHECK_PING_INTERVAL 5 * 60 *1000 // 5 minutes
// sync

@ -25,6 +25,8 @@ Sync::Sync(const QString address, int port, const QString &datadir):
fbroadcaster = false;
resyncCount = 0;
lastSyncTime = 0;
ping = 0;
sql = new MySql(datadir);
sql->updateAvailableSongs(playList);
@ -201,8 +203,11 @@ bool Sync::createPackage(Type type, package &pac){
pac.type = type;
if(type & TypePackage::t_sync && fbroadcaster){
pac.playdata.seek = player->position();
if(type & TypePackage::t_sync){
if(lastSyncTime)
pac.playdata.seek = player->position();
else
lastSyncTime = ChronoTime::now();
}
@ -253,16 +258,20 @@ void Sync::packageRender(ETcpSocket *socket){
emit networkStateChange();
}
// if(fbroadcaster == (pkg.getType() & t_brodcaster)){
// throw BrodcastConflict();
// socket->nextItem();
// continue;
// }
if(pkg.getType() & t_brodcaster){
// if requst from server
if(pkg.getType() & t_sync && !sync(pkg.getPlayData(), 10)){
// calc ping for sync
bool fFromRequst = false;
if(lastSyncTime){
ping = ChronoTime::now() - lastSyncTime;
lastSyncTime = 0;
fFromRequst = true;
}
if(pkg.getType() & t_sync &&
!sync(pkg.getPlayData(), (fFromRequst)? ping: ping/2)){
QTimer::singleShot(RESYNC_TIME, [=]() {
package pac;

@ -29,6 +29,8 @@ private:
QList<ETcpSocket*> servers;
bool fbroadcaster;
int resyncCount;
int lastSyncTime;
int ping;
LocalScanner deepScaner;
MySql *sql;
int port;