6#ifndef QWINDOWSPIPEWRITER_P_H
7#define QWINDOWSPIPEWRITER_P_H
22#include <private/qringbuffer_p.h>
24#include <qt_windows.h>
32 explicit QWindowsPipeWriter(HANDLE pipeWriteEnd, QObject *parent =
nullptr);
33 ~QWindowsPipeWriter();
35 void setHandle(HANDLE hPipeWriteEnd);
36 void write(
const QByteArray &ba);
37 void write(
const char *data, qint64 size);
39 bool checkForWrite() {
return consumePendingAndEmit(
false); }
40 qint64 bytesToWrite()
const;
41 bool isWriteOperationActive()
const;
42 HANDLE syncEvent()
const {
return syncHandle; }
45 void bytesWritten(qint64 bytes);
49 bool event(QEvent *e) override;
52 enum CompletionState { NoError, ErrorDetected, WriteDisabled };
54 template <
typename... Args>
55 inline void writeImpl(Args... args);
57 void startAsyncWriteHelper(QMutexLocker<QMutex> *locker);
58 void startAsyncWriteLocked();
59 static void CALLBACK waitCallback(PTP_CALLBACK_INSTANCE instance, PVOID context,
60 PTP_WAIT wait, TP_WAIT_RESULT waitResult);
61 bool writeCompleted(DWORD errorCode, DWORD numberOfBytesWritten);
62 void notifyCompleted(QMutexLocker<QMutex> *locker);
63 bool consumePendingAndEmit(
bool allowWinActPosting);
69 OVERLAPPED overlapped;
70 QRingBuffer writeBuffer;
71 qint64 pendingBytesWrittenValue;
75 CompletionState completionState;
77 bool writeSequenceStarted;
78 bool bytesWrittenPending;
79 bool winEventActPosted;
QDynamicMetaObjectData * metaObject
const QMetaObject * dynamicMetaObject() const
QBindingStorage bindingStorage
Exception-safe wrapper around QObject::blockSignals().
void unblock() noexcept
Temporarily restores the QObject::signalsBlocked() state to what it was before this QSignalBlocker's ...
void reblock() noexcept
Re-blocks signals after a previous unblock().
QSignalBlocker & operator=(QSignalBlocker &&other) noexcept
Move-assigns this signal blocker from other.
~QSignalBlocker()
Destructor.
QObject & deref_for_methodcall(QObject *o)
QObject & deref_for_methodcall(QObject &o)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
std::enable_if_t< std::is_const< T >::value, T * > qobject_iid_cast(const QObject *object)
const QBindingStorage * qGetBindingStorage(const QObject *o)
constexpr const char * qobject_interface_iid()=delete
Q_CORE_EXPORT void qt_qFindChildren_helper(const QObject *parent, QAnyStringView name, const QMetaObject &mo, QList< void * > *list, Qt::FindChildOptions options)
T qobject_cast(QObject *object)
\variable QObject::staticMetaObject
T * qobject_iid_cast(QObject *object, const char *IId=qobject_interface_iid< T * >())
QList< QObject * > QObjectList
Q_CORE_EXPORT void qt_qFindChildren_helper(const QObject *parent, const QRegularExpression &re, const QMetaObject &mo, QList< void * > *list, Qt::FindChildOptions options)
T qobject_cast(const QObject *object)
QBindingStorage * qGetBindingStorage(QObject *o)
QT_BEGIN_NAMESPACE constexpr UINT KillProcessExitCode