Пример #1
0
void QNetworkAccessDebugPipeBackend::upstreamReadyRead()
{
    int maxWrite = WriteBufferSize - socket.bytesToWrite();
    if (maxWrite <= 0)
        return;                 // can't write yet, wait for the socket to write

    if (bareProtocol) {
        QByteArray data = readUpstream();
        if (data.isEmpty())
            return;

        socket.write(data);
        upstreamBytesConsumed(data.size());
        bytesWrittenEmitted = true;
        return;
    }

    DataPacket packet;
    packet.data = readUpstream();
    if (packet.data.isEmpty())
        return;                 // we'll be called again when there's data
    if (packet.data.size() > maxWrite)
        packet.data.truncate(maxWrite);

    if (!send(packet)) {
        QString msg = QObject::tr("Write error writing to %1: %2")
                      .arg(url().toString(), socket.errorString());
        error(QNetworkReply::ProtocolFailure, msg);

        finished();
        return;
    }
    upstreamBytesConsumed(packet.data.size());
    bytesWrittenEmitted = true;
}
Пример #2
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);
    }
}
qint64 QNetworkAccessHttpBackend::deviceReadData(char *buffer, qint64 maxlen)
{
    QByteArray toBeUploaded = readUpstream();
    if (toBeUploaded.isEmpty())
        return 0;               // nothing to be uploaded

    maxlen = qMin<qint64>(maxlen, toBeUploaded.length());

    memcpy(buffer, toBeUploaded.constData(), maxlen);
    upstreamBytesConsumed(maxlen);
    return maxlen;
}