8#include <QtCore/private/qobject_p.h>
9#include <QtCore/private/qrandomaccessasyncfile_p_p.h>
14 : dataStorage(storage)
19QIOOperationPrivate::~QIOOperationPrivate()
33 state = State::Finished;
34 if (err != QIOOperation::Error::None)
35 Q_EMIT q->errorOccurred(err);
43 if (err != QIOOperation::Error::None) {
44 state = State::Finished;
45 Q_EMIT q->errorOccurred(err);
50QIOOperation::~QIOOperation()
52 ensureCompleteOrCanceled();
55QIOOperation::Type QIOOperation::type()
const
57 Q_D(
const QIOOperation);
61QIOOperation::Error QIOOperation::error()
const
63 Q_D(
const QIOOperation);
67bool QIOOperation::isFinished()
const
69 Q_D(
const QIOOperation);
70 return d->state == QIOOperationPrivate::State::Finished;
73QIOOperation::QIOOperation(QIOOperationPrivate &dd, QObject *parent)
76 if (
auto file = qobject_cast<QRandomAccessAsyncFile*>(parent))
77 d_func()->file = file;
80void QIOOperation::ensureCompleteOrCanceled()
85 if (d->state != QIOOperationPrivate::State::Finished) {
87 auto *filePriv = QRandomAccessAsyncFilePrivate::get(d->file);
88 filePriv->cancelAndWait(
this);
93QIOReadWriteOperationBase::~QIOReadWriteOperationBase()
96qint64 QIOReadWriteOperationBase::offset()
const
98 Q_D(
const QIOOperation);
102qint64 QIOReadWriteOperationBase::numBytesProcessed()
const
106 Q_D(
const QIOOperation);
110QIOReadWriteOperationBase::QIOReadWriteOperationBase(QIOOperationPrivate &dd, QObject *parent)
111 : QIOOperation(dd, parent)
115QIOReadOperation::~QIOReadOperation() =
default;
117QByteArray QIOReadOperation::data()
const
121 Q_D(
const QIOOperation);
122 return d->dataStorage->getValue<QByteArray>();
125QIOReadOperation::QIOReadOperation(QIOOperationPrivate &dd, QObject *parent)
126 : QIOReadWriteOperationBase(dd, parent)
128 Q_ASSERT(dd.type == QIOOperation::Type::Read);
129 Q_ASSERT(dd.dataStorage->containsByteArray());
132QIOWriteOperation::~QIOWriteOperation() =
default;
134QByteArray QIOWriteOperation::data()
const
138 Q_D(
const QIOOperation);
139 return d->dataStorage->getValue<QByteArray>();
142QIOWriteOperation::QIOWriteOperation(QIOOperationPrivate &dd, QObject *parent)
143 : QIOReadWriteOperationBase(dd, parent)
145 Q_ASSERT(dd.type == QIOOperation::Type::Write);
146 Q_ASSERT(dd.dataStorage->containsByteArray());
149QIOVectoredReadOperation::~QIOVectoredReadOperation() =
default;
151QSpan<
const QSpan<std::byte>> QIOVectoredReadOperation::data()
const
155 Q_D(
const QIOOperation);
156 return d->dataStorage->getValue<QSpan<
const QSpan<std::byte>>>();
159QIOVectoredReadOperation::QIOVectoredReadOperation(QIOOperationPrivate &dd, QObject *parent)
160 : QIOReadWriteOperationBase(dd, parent)
162 Q_ASSERT(dd.type == QIOOperation::Type::Read);
163 Q_ASSERT(dd.dataStorage->containsReadSpans());
166QIOVectoredWriteOperation::~QIOVectoredWriteOperation() =
default;
168QSpan<
const QSpan<
const std::byte>> QIOVectoredWriteOperation::data()
const
172 Q_D(
const QIOOperation);
173 return d->dataStorage->getValue<QSpan<
const QSpan<
const std::byte>>>();
176QIOVectoredWriteOperation::QIOVectoredWriteOperation(QIOOperationPrivate &dd, QObject *parent)
177 : QIOReadWriteOperationBase(dd, parent)
179 Q_ASSERT(dd.type == QIOOperation::Type::Write);
180 Q_ASSERT(dd.dataStorage->containsWriteSpans());
void setError(QIOOperation::Error err)
void operationComplete(QIOOperation::Error err)
void appendBytesProcessed(qint64 num)