55 const QString& tmpcopydir,
61 m_d->examineEvtsOnServerTimer = 0;
62 m_d->fileinfoUrl = fileinfoUrl;
63 QUrl url(fileinfoUrl);
65 QString path = url.path();
66 QString infofilebasename = QFileInfo(path).fileName();
67 if (!infofilebasename.isEmpty()&&path.endsWith(infofilebasename)) {
68 m_d->baseUrl=fileinfoUrl;
69 m_d->baseUrl.chop(infofilebasename.count());
70 if (!QUrl(
m_d->baseUrl).isValid())
72 else if (!
m_d->baseUrl.endsWith(
"/"))
77 m_d->evtsOnServer = 0;
78 connect(&(
m_d->httpgetfile_fileinfo),SIGNAL(downloadSuccessful(
const QString&,
const QString&,
const QString&)),
80 connect(&(
m_d->httpgetfile_fileinfo),SIGNAL(downloadFailed(
const QString&,
const QString&,
const QString&,
const QString&)),
82 connect(&(
m_d->httpgetfile_events),SIGNAL(downloadSuccessful(
const QString&,
const QString&,
const QString&)),
84 connect(&(
m_d->httpgetfile_events),SIGNAL(downloadFailed(
const QString&,
const QString&,
const QString&,
const QString&)),
88 connect(
m_d->webwatcher_fileinfo,SIGNAL(urlChanged(
const QString&)),
this,SLOT(
fileInfoChanged()));
94 m_d->webwatcher_fileinfo->addUrl(
m_d->fileinfoUrl);
95 m_d->restartExamineEvtsOnServerTimer();
101 delete m_d->evtsOnServer;
109 message(
"Problems investigating "+
m_d->fileinfoUrl);
110 message(
" ===> "+
m_d->webwatcher_fileinfo->lastResultToString(
m_d->fileinfoUrl));
115 message(
"Error: No temporary retrieval directory set!");
116 m_d->getFileInfoLater();
119 QString target = ad+
"downloadedfileinfo.txt";
120 if ( QFileInfo(target).
exists() && !QFile(target).remove() ) {
121 message(
"ERROR: Could not remove old "+target);
122 m_d->getFileInfoLater();
125 QString err =
m_d->httpgetfile_fileinfo.startDownload(
m_d->fileinfoUrl,target);
126 if (!err.isEmpty()) {
127 message(
"Problems starting download to get file-info file: "+err);
128 m_d->getFileInfoLater();
136 if (!newEvtsOnServerInfo->
isValid()) {
137 message(
"Problems decoding info in file downloaded from "+urltofile);
139 delete newEvtsOnServerInfo;
140 QFile::remove(localtargetfile);
141 m_d->getFileInfoLater();
145 delete m_d->evtsOnServer;
146 m_d->evtsOnServer = newEvtsOnServerInfo;
154 m_d->restartExamineEvtsOnServerTimer();
155 if (
m_d->httpgetfile_events.numberOfPendingDownloads()>3)
157 if (!
m_d->evtsOnServer)
163 if (localfiledir.isEmpty()) {
164 message(
"Problems with temporary local event file directory.");
170 if (!evt.isValid()||
inHistory(evt.runNumber(),evt.eventNumber()))
172 if ( !QFile::exists ( localfiledir+evt.fileName() ) ) {
178 if (!evtToGet.
isValid()&&
m_d->examineEvtsOnServerTimer)
179 m_d->examineEvtsOnServerTimer->stop();
185 QList<VP1EventFile> freshLocalEvents =
freshEvents();
188 if (evt < evtToGet) {
200 if (!
m_d->httpgetfile_events.isDownloading(url)&&!
m_d->httpgetfile_events.isDownloadingTo(target)) {
201 QString err =
m_d->httpgetfile_events.startDownload( url,target,evtToGet.
md5Sum(),localfiledir+evtToGet.
fileName());
202 if (!err.isEmpty()) {
203 message(
"Problems starting download of :" +url);
211 message(
"Problems with temporary local download directory.");
222 QFile::remove(localtargetfile);
224 m_d->getFileInfoLater();
233 if (!QFile::rename(localtargetfile,
data)) {
234 message(
"Error: Could not move "+localtargetfile+
" to "+
data);
235 QFile::remove(localtargetfile);
237 m_d->getFileInfoLater();
247 QFile::remove(localtargetfile);
248 m_d->getFileInfoLater();
char data[hepevt_bytes_allocation_ATLAS]
QList< VP1EventFile > freshEvents() const
QString tmpLocalFileDir() const
void message(const QString &) const
VP1AvailEvents(int timeCutForNew, const QString &tmpdir, int maxLocalFilesToKeep=-1, QObject *parent=0)
bool requireNewestRunNumber() const
int timeCutForNew() const
bool inHistory(int run, int event) const
int maxLocalFilesToKeep() const
void invalidateDirCache(const QString &dir)
void cleanupAndCheckForEventListChanges()
QString tmpActiveRetrievalDir()
VP1HttpGetFile httpgetfile_events
VP1HttpGetFile httpgetfile_fileinfo
QTimer * examineEvtsOnServerTimer
VP1EvtsOnServerInfo * evtsOnServer
void restartExamineEvtsOnServerTimer()
static unsigned ntmpdlcount
VP1WebWatcher * webwatcher_fileinfo
VP1AvailEvtsHttp * theclass
virtual ~VP1AvailEvtsHttp()
void eventFileDownloadSuccessful(const QString &urltofile, const QString &localtargetfile, const QString &data)
VP1AvailEvtsHttp(const QString &fileinfoUrl, int updateInterval, int timeCutForNew, const QString &tmpcopydir, int maxLocalFilesToKeep=-1, QObject *parent=0)
void examineEvtsOnServer()
void fileInfoDownloadSuccessful(const QString &urltofile, const QString &localtargetfile)
void fileInfoDownloadFailed(const QString &error, const QString &urltofile, const QString &localtargetfile)
void eventFileDownloadFailed(const QString &error, const QString &urltofile, const QString &localtargetfile)
const QString & fileName() const
const QString & md5Sum() const
const QString & error() const
bool exists(const std::string &filename)
does a file exist