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; }
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; }