aboutsummaryrefslogtreecommitdiff
path: root/lib/streamreader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/streamreader.cpp')
-rw-r--r--lib/streamreader.cpp88
1 files changed, 35 insertions, 53 deletions
diff --git a/lib/streamreader.cpp b/lib/streamreader.cpp
index 95df30d9d..a72d85363 100644
--- a/lib/streamreader.cpp
+++ b/lib/streamreader.cpp
@@ -18,36 +18,20 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include <QApplication>
-#include <QHttp>
#include <QUrl>
+#include "downloader.h"
#include "streamreader.h"
StreamReader::StreamReader(const QString &name, QObject *parent)
: QIODevice(parent)
{
- qDebug(qPrintable(name));
- m_http = new QHttp(this);
-
- m_pos = 0;
-
- connect(m_http, SIGNAL(requestFinished(int, bool)),
- this, SLOT(httpRequestFinished(int, bool)));
- connect(m_http, SIGNAL(dataReadProgress(int, int)),
- this, SLOT(updateDataReadProgress(int, int)));
- connect(m_http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)),
- this, SLOT(readResponseHeader(const QHttpResponseHeader &)));
-
- m_url = QUrl(name);
-
- m_http->setHost(m_url.host(), m_url.port() != -1 ? m_url.port() : 80);
- if (!m_url.userName().isEmpty())
- m_http->setUser(m_url.userName(), m_url.password());
+ m_downloader = new Downloader(this, name);
}
StreamReader::~StreamReader()
{
- m_http->abort();
+ m_downloader->abort();
}
bool StreamReader::atEnd () const
@@ -57,7 +41,7 @@ bool StreamReader::atEnd () const
qint64 StreamReader::bytesAvailable () const
{
- return m_http->bytesAvailable ();
+ return m_downloader->bytesAvailable ();
}
qint64 StreamReader::bytesToWrite () const
@@ -72,8 +56,9 @@ bool StreamReader::canReadLine () const
void StreamReader::close ()
{
- m_httpRequestAborted = TRUE;
- m_http->close();
+ //m_httpRequestAborted = TRUE;
+ //m_http->close();
+ m_downloader->abort();
}
bool StreamReader::isSequential () const
@@ -86,8 +71,8 @@ bool StreamReader::open ( OpenMode mode )
if (mode != QIODevice::ReadOnly)
return FALSE;
downloadFile();
- if (m_httpRequestAborted)
- return FALSE;
+ //if (m_httpRequestAborted)
+ //return TRUE;
setOpenMode(QIODevice::ReadOnly);
return TRUE;
}
@@ -126,7 +111,7 @@ bool StreamReader::waitForReadyRead ( int msecs )
qint64 StreamReader::readData(char* data, qint64 maxlen)
{
- return m_http->read (data, maxlen);
+ return m_downloader->read (data, maxlen);
}
qint64 StreamReader::writeData(const char*, qint64)
@@ -137,12 +122,20 @@ qint64 StreamReader::writeData(const char*, qint64)
void StreamReader::downloadFile()
{
m_httpRequestAborted = FALSE;
- qDebug("StreamReader: connecting...");
- m_httpGetId = m_http->get(m_url.path(), 0);
+ //qDebug("StreamReader: connecting...");
+ //m_httpGetId = m_http->get(m_url.path(), 0);
qDebug("StreamReader: buffering...");
- while (m_http->bytesAvailable () < BUFFER_SIZE*0.5 && !m_httpRequestAborted)
+ /*while (m_http->bytesAvailable () < BUFFER_SIZE*0.5 && !m_httpRequestAborted)
+ {
+ qApp->processEvents();
+ }*/
+ m_downloader->start();
+ while (m_downloader->bytesAvailable () < BUFFER_SIZE*0.5 &&
+ m_downloader->isRunning())
{
qApp->processEvents();
+ //qDebug("StreamReader: bytes: %d",m_downloader->bytesAvailable ());
+ //sleep(1);
}
qDebug("StreamReader: ready");
}
@@ -150,7 +143,7 @@ void StreamReader::downloadFile()
void StreamReader::cancelDownload()
{
m_httpRequestAborted = true;
- m_http->abort();
+ //&& !m_httpRequestAborted->abort();
}
void StreamReader::httpRequestFinished(int requestId, bool error)
@@ -165,7 +158,8 @@ void StreamReader::httpRequestFinished(int requestId, bool error)
if (error)
{
- qDebug(qPrintable(QString("StreamReader: %1").arg(m_http->errorString())));
+ //qDebug(qPrintable(QString("StreamReader: %1").arg(m_http->errorString())));
+ m_httpRequestAborted = TRUE;
}
else
{
@@ -174,18 +168,6 @@ void StreamReader::httpRequestFinished(int requestId, bool error)
}
-void StreamReader::readResponseHeader(const QHttpResponseHeader &responseHeader)
-{
- m_contentType = responseHeader.contentType ();
- if (responseHeader.statusCode() != 200)
- {
- qDebug(qPrintable(QString("Download failed: %1.") .arg(responseHeader.reasonPhrase())));
- m_httpRequestAborted = true;
- m_http->abort();
- return;
- }
-}
-
void StreamReader::updateDataReadProgress(int bytesRead, int totalBytes)
{
m_pos = bytesRead;
@@ -195,7 +177,7 @@ void StreamReader::updateDataReadProgress(int bytesRead, int totalBytes)
void StreamReader::fillBuffer()
{
- if (m_http->bytesAvailable () > BUFFER_SIZE && !m_httpRequestAborted)
+ /*if (m_http->bytesAvailable () > BUFFER_SIZE && !m_httpRequestAborted)
{
while (m_http->bytesAvailable () > BUFFER_SIZE*0.75 && !m_httpRequestAborted)
{
@@ -205,22 +187,22 @@ void StreamReader::fillBuffer()
qApp->processEvents();
delete data;
}
- }
+ }*/
}
const QString &StreamReader::contentType()
{
- if(!m_contentType.isEmpty())
- return m_contentType;
- m_httpRequestAborted = FALSE;
- qDebug("StreamReader: reading content type");
- m_httpGetId = m_http->get(m_url.path(), 0);
- while (m_contentType.isEmpty() && !m_httpRequestAborted)
+ //Downloader* dw = new Downloader(this, "http://127.0.0.1:8000/");
+ m_downloader->start();
+ while (m_contentType.isEmpty() && m_downloader->isRunning())
{
+ m_downloader->mutex()->lock ();
+ m_contentType = m_downloader->contentType();
+ m_downloader->mutex()->unlock();
qApp->processEvents();
}
- qDebug("StreamReader: content type: %s", qPrintable(m_contentType));
- //m_http->abort();
- m_http->close();
+ //m_contentType = dw->contentType();
+ m_downloader->abort();
+ qDebug("StreamReader: content type: %s", qPrintable(m_contentType));
return m_contentType;
}