void Tresenv::doStatusUpdate(Speedometer& speedometer) { speedometer.beginNewInterval(); if (opt_perfdisplay) { ::fprintf(fout, "** Event #%" LL "d T=%s Elapsed: %s%s\n", simulation.getEventNumber(), SIMTIME_STR(simulation.getSimTime()), timeToStr(totalElapsed()), progressPercentage()); // note: IDE launcher uses this to track progress ::fprintf(fout, " Speed: ev/sec=%g simsec/sec=%g ev/simsec=%g\n", speedometer.getEventsPerSec(), speedometer.getSimSecPerSec(), speedometer.getEventsPerSimSec()); ::fprintf(fout, " Messages: created: %ld present: %ld in FES: %d\n", cMessage::getTotalMessageCount(), cMessage::getLiveMessageCount(), simulation.msgQueue.getLength()); } else { ::fprintf(fout, "** Event #%" LL "d T=%s Elapsed: %s%s ev/sec=%g\n", simulation.getEventNumber(), SIMTIME_STR(simulation.getSimTime()), timeToStr(totalElapsed()), progressPercentage(), // note: IDE launcher uses this to track progress speedometer.getEventsPerSec()); } // status update is always autoflushed (not only if opt_autoflush is on) ::fflush(fout); }
void Tresenv::printEventBanner(cSimpleModule *mod) { ::fprintf(fout, "** Event #%" LL "d T=%s%s %s (%s, id=%d)\n", simulation.getEventNumber(), SIMTIME_STR(simulation.getSimTime()), progressPercentage(), // note: IDE launcher uses this to track progress mod->getFullPath().c_str(), mod->getComponentType()->getName(), mod->getId() ); if (opt_eventbanner_details) { ::fprintf(fout, " Elapsed: %s Messages: created: %ld present: %ld in FES: %d\n", timeToStr(totalElapsed()), cMessage::getTotalMessageCount(), cMessage::getLiveMessageCount(), simulation.msgQueue.getLength()); } }
void DownloadJob::onDownloadProgress( qint64 rcvd, qint64 total ) { if ( m_reply == 0 ) return; if ( rcvd >= m_fileSize && m_fileSize > 0 ) { m_finished = true; } if ( state() == Paused ) return; m_rcvdSize = rcvd; m_fileSize = total; qint64 now = QDateTime::currentDateTime().toMSecsSinceEpoch(); if ( ( now - 50 > m_rcvdStamp ) || ( rcvd == total ) ) { m_rcvdStamp = now; if ( ( m_rcvdSize - 16384 > m_rcvdEmit ) || ( rcvd == total ) ) { m_rcvdEmit = m_rcvdSize; emit progress( progressPercentage() ); } } if ( !m_file ) return; if ( !m_file->isOpen() ) { if ( m_tryResuming && checkForResumedFile() ) return; if ( !m_file->open( QIODevice::WriteOnly ) ) { tLog() << Q_FUNC_INFO << "Failed opening file:" << m_file->fileName(); setState( Failed ); return; } } QByteArray data = m_reply->readAll(); if ( data.isEmpty() ) return; if ( m_file->write( data ) < 0 ) { tLog() << Q_FUNC_INFO << "Failed writing to file:" << data.length(); onDownloadError( QNetworkReply::UnknownContentError ); return; } if ( m_rcvdSize >= m_fileSize && m_fileSize > 0 ) { onDownloadFinished(); } else if ( m_reply->isFinished() && m_reply->bytesAvailable() == 0 ) { if ( ( m_fileSize > 0 && m_rcvdSize < m_fileSize ) || m_rcvdSize == 0 ) { onDownloadError( QNetworkReply::UnknownContentError ); return; } } }