Beispiel #1
0
void masterconn_download_next(masterconn *eptr) {
    uint8_t *ptr;
    uint8_t filenum;
    int64_t dltime;
    if (eptr->dloffset>=eptr->filesize) {	// end of file
        filenum = eptr->downloading;
        if (masterconn_download_end(eptr)<0) {
            return;
        }
        dltime = main_utime()-eptr->dlstartuts;
        if (dltime<=0) {
            dltime=1;
        }
        syslog(LOG_NOTICE,"%s downloaded %"PRIu64"B/%"PRIu64".%06"PRIu32"s (%.3lf MB/s)",(filenum==1)?"metadata":(filenum==2)?"sessions":(filenum==11)?"changelog_0":(filenum==12)?"changelog_1":"???",eptr->filesize,dltime/1000000,(uint32_t)(dltime%1000000),(double)(eptr->filesize)/(double)(dltime));
        if (filenum==1) {
            if (masterconn_metadata_check("metadata_ml.tmp")==0) {
                if (BackMetaCopies>0) {
                    char metaname1[100],metaname2[100];
                    int i;
                    for (i=BackMetaCopies-1 ; i>0 ; i--) {
                        snprintf(metaname1,100,"metadata_ml.mfs.back.%"PRIu32,i+1);
                        snprintf(metaname2,100,"metadata_ml.mfs.back.%"PRIu32,i);
                        rename(metaname2,metaname1);
                    }
                    rename("metadata_ml.mfs.back","metadata_ml.mfs.back.1");
                }
                if (rename("metadata_ml.tmp","metadata_ml.mfs.back")<0) {
                    syslog(LOG_NOTICE,"can't rename downloaded metadata - do it manually before next download");
                }
            }
            if (eptr->oldmode==0) {
                masterconn_download_init(eptr,11);
            } else {
                masterconn_download_init(eptr,2);
            }
        } else if (filenum==11) {
            if (rename("changelog_ml.tmp","changelog_ml_back.0.mfs")<0) {
                syslog(LOG_NOTICE,"can't rename downloaded changelog - do it manually before next download");
            }
            masterconn_download_init(eptr,12);
        } else if (filenum==12) {
            if (rename("changelog_ml.tmp","changelog_ml_back.1.mfs")<0) {
                syslog(LOG_NOTICE,"can't rename downloaded changelog - do it manually before next download");
            }
            masterconn_download_init(eptr,2);
        } else if (filenum==2) {
            if (rename("sessions_ml.tmp","sessions_ml.mfs")<0) {
                syslog(LOG_NOTICE,"can't rename downloaded sessions - do it manually before next download");
            }
        }
    } else {	// send request for next data packet
        ptr = masterconn_createpacket(eptr,MLTOMA_DOWNLOAD_DATA,12);
        put64bit(&ptr,eptr->dloffset);
        if (eptr->filesize-eptr->dloffset>META_DL_BLOCK) {
            put32bit(&ptr,META_DL_BLOCK);
        } else {
            put32bit(&ptr,eptr->filesize-eptr->dloffset);
        }
    }
}
Beispiel #2
0
void masterconn_metadownloadinit(void) {
    masterconn_download_init(masterconnsingleton,1);
}
Beispiel #3
0
void masterconn_changelog0downloadinit(void) {
	masterconn_download_init(master_serve,2);
}
Beispiel #4
0
void masterconn_sessionsdownloadinit(void) {
    masterconn_download_init(masterconnsingleton,2);
}
Beispiel #5
0
void masterconn_metadownloadinit(void) {
	masterconn_download_init(master_serve,1);
}