Esempio n. 1
0
void QNetworkAccessFileBackend::upstreamReadyRead()
{
    Q_ASSERT_X(operation() == QNetworkAccessManager::PutOperation, "QNetworkAccessFileBackend",
               "We're being told to upload data but operation isn't PUT!");

    // there's more data to be written to the file
    while (upstreamBytesAvailable()) {
        // write everything and let QFile handle it
        int written = file.write(readUpstream());

        if (written < 0) {
            // write error!
            QString msg = QCoreApplication::translate("QNetworkAccessFileBackend", "Write error writing to %1: %2")
                                                    .arg(url().toString(), file.errorString());
            error(QNetworkReply::ProtocolFailure, msg);

            finished();
            return;
        }

        // successful write
        file.flush();
        upstreamBytesConsumed(written);
    }
}
QByteArray QNetworkAccessBackend::readUpstream()
{
    // ### this is expensive. Consider making QRingBuffer::peekAll keep the buffer it returns
    return reply->writeBuffer.peek(upstreamBytesAvailable());
}