Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qhttpsocketengine_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QHTTPSOCKETENGINE_P_H
5#define QHTTPSOCKETENGINE_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtNetwork/private/qtnetworkglobal_p.h>
19
20#include <QtNetwork/qnetworkproxy.h>
21
22#include "qabstractsocket.h"
23#include "private/qauthenticator_p.h"
24#include "private/qabstractsocketengine_p.h"
25
27
29
30#if !defined(QT_NO_NETWORKPROXY)
31
32class QTcpSocket;
35
37{
39public:
48 QHttpSocketEngine(QObject *parent = nullptr);
50
52 bool initialize(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = QAbstractSocket::ConnectedState) override;
53
54 void setProxy(const QNetworkProxy &networkProxy);
55
56 qintptr socketDescriptor() const override;
57
58 bool isValid() const override;
59
60 bool connectInternal();
61 bool connectToHost(const QHostAddress &address, quint16 port) override;
62 bool connectToHostByName(const QString &name, quint16 port) override;
63 bool bind(const QHostAddress &address, quint16 port) override;
64 bool listen(int backlog) override;
65 qintptr accept() override;
66 void close() override;
67
68 qint64 bytesAvailable() const override;
69
70 qint64 read(char *data, qint64 maxlen) override;
71 qint64 write(const char *data, qint64 len) override;
72
73#ifndef QT_NO_UDPSOCKET
74#ifndef QT_NO_NETWORKINTERFACE
75 bool joinMulticastGroup(const QHostAddress &groupAddress,
76 const QNetworkInterface &interface) override;
77 bool leaveMulticastGroup(const QHostAddress &groupAddress,
78 const QNetworkInterface &interface) override;
80 bool setMulticastInterface(const QNetworkInterface &iface) override;
81#endif // QT_NO_NETWORKINTERFACE
82
83 bool hasPendingDatagrams() const override;
84 qint64 pendingDatagramSize() const override;
85#endif // QT_NO_UDPSOCKET
86
88 PacketHeaderOptions) override;
89 qint64 writeDatagram(const char *data, qint64 len, const QIpPacketHeader &) override;
90 qint64 bytesToWrite() const override;
91
92 int option(SocketOption option) const override;
93 bool setOption(SocketOption option, int value) override;
94
96 bool *timedOut = nullptr) override;
98 bool *timedOut = nullptr) override;
99 bool waitForReadOrWrite(bool *readyToRead, bool *readyToWrite,
100 bool checkRead, bool checkWrite,
102 bool *timedOut = nullptr) override;
103
104 void waitForProtocolHandshake(QDeadlineTimer deadline) const;
105
106 bool isReadNotificationEnabled() const override;
107 void setReadNotificationEnabled(bool enable) override;
108 bool isWriteNotificationEnabled() const override;
109 void setWriteNotificationEnabled(bool enable) override;
110 bool isExceptionNotificationEnabled() const override;
111 void setExceptionNotificationEnabled(bool enable) override;
112
113public slots:
114 void slotSocketConnected();
115 void slotSocketDisconnected();
116 void slotSocketReadNotification();
117 void slotSocketBytesWritten();
118 void slotSocketError(QAbstractSocket::SocketError error);
119 void slotSocketStateChanged(QAbstractSocket::SocketState state);
120
121private slots:
122 void emitPendingReadNotification();
123 void emitPendingWriteNotification();
124 void emitPendingConnectionNotification();
125
126private:
127 void emitReadNotification();
128 void emitWriteNotification();
129 void emitConnectionNotification();
130
131 bool readHttpHeader();
132
133 Q_DECLARE_PRIVATE(QHttpSocketEngine)
134 Q_DISABLE_COPY_MOVE(QHttpSocketEngine)
135
136};
137
138
161
163{
164public:
166 const QNetworkProxy &, QObject *parent) override;
167 virtual QAbstractSocketEngine *createSocketEngine(qintptr socketDescripter, QObject *parent) override;
168};
169#endif
170
172
173#endif // QHTTPSOCKETENGINE_H
virtual bool leaveMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface)=0
virtual bool waitForRead(QDeadlineTimer deadline=QDeadlineTimer{DefaultTimeout}, bool *timedOut=nullptr)=0
virtual bool setMulticastInterface(const QNetworkInterface &iface)=0
virtual bool joinMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface)=0
virtual void setWriteNotificationEnabled(bool enable)=0
virtual bool bind(const QHostAddress &address, quint16 port)=0
virtual bool isValid() const =0
virtual bool isReadNotificationEnabled() const =0
virtual bool hasPendingDatagrams() const =0
virtual bool connectToHost(const QHostAddress &address, quint16 port)=0
virtual qintptr accept()=0
virtual qint64 readDatagram(char *data, qint64 maxlen, QIpPacketHeader *header=nullptr, PacketHeaderOptions=WantNone)=0
virtual qint64 read(char *data, qint64 maxlen)=0
virtual void setReadNotificationEnabled(bool enable)=0
static QAbstractSocketEngine * createSocketEngine(QAbstractSocket::SocketType socketType, const QNetworkProxy &, QObject *parent)
virtual bool waitForReadOrWrite(bool *readyToRead, bool *readyToWrite, bool checkRead, bool checkWrite, QDeadlineTimer deadline=QDeadlineTimer{DefaultTimeout}, bool *timedOut=nullptr)=0
virtual bool setOption(SocketOption option, int value)=0
virtual qint64 write(const char *data, qint64 len)=0
virtual qint64 pendingDatagramSize() const =0
virtual qintptr socketDescriptor() const =0
virtual bool connectToHostByName(const QString &name, quint16 port)=0
virtual qint64 bytesAvailable() const =0
virtual qint64 bytesToWrite() const =0
virtual void setExceptionNotificationEnabled(bool enable)=0
virtual bool isWriteNotificationEnabled() const =0
virtual void close()=0
virtual bool isExceptionNotificationEnabled() const =0
virtual qint64 writeDatagram(const char *data, qint64 len, const QIpPacketHeader &header)=0
virtual QNetworkInterface multicastInterface() const =0
SocketState
This enum describes the different states in which a socket can be.
static constexpr auto IPv4Protocol
SocketError
This enum describes the socket errors that can occur.
SocketType
This enum describes the transport layer protocol.
The QAuthenticator class provides an authentication object.
\inmodule QtCore
The QHostAddress class provides an IP address.
QHttpSocketEngine::HttpState state
The QNetworkInterface class provides a listing of the host's IP addresses and network interfaces.
The QNetworkProxy class provides a network layer proxy.
\inmodule QtCore
Definition qobject.h:103
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
The QTcpSocket class provides a TCP socket.
Definition qtcpsocket.h:18
else opt state
[0]
Combined button and popup list for selecting options.
static constexpr std::chrono::seconds DefaultTimeout
static bool initialize()
Definition qctf.cpp:94
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char * interface
DBusConnection const char DBusError * error
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
EGLOutputPortEXT port
static QT_BEGIN_NAMESPACE const char * socketType(QSocketNotifier::Type type)
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum type
GLboolean enable
GLuint name
GLuint GLuint64EXT address
GLuint GLenum option
GLenum GLsizei len
#define Q_AUTOTEST_EXPORT
#define QT_REQUIRE_CONFIG(feature)
#define Q_OBJECT
#define slots
unsigned short quint16
Definition qtypes.h:48
unsigned int uint
Definition qtypes.h:34
long long qint64
Definition qtypes.h:60
ptrdiff_t qintptr
Definition qtypes.h:166
QDeadlineTimer deadline(30s)
serverSocket setProxy(QNetworkProxy::NoProxy)
[0]
socketLayer waitForWrite()
socketLayer listen()