Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qabstractsocketengine_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// Copyright (C) 2016 Intel Corporation.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
5#ifndef QABSTRACTSOCKETENGINE_P_H
6#define QABSTRACTSOCKETENGINE_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtNetwork/private/qtnetworkglobal_p.h>
20#include "QtNetwork/qhostaddress.h"
21#include "QtNetwork/qabstractsocket.h"
22#include "private/qobject_p.h"
23#include "private/qnetworkdatagram_p.h"
24
26
27class QAuthenticator;
29#ifndef QT_NO_NETWORKINTERFACE
31#endif
32class QNetworkProxy;
33
35public:
37 virtual void readNotification()= 0;
38 virtual void writeNotification()= 0;
39 virtual void closeNotification()= 0;
40 virtual void exceptionNotification()= 0;
41 virtual void connectionNotification()= 0;
42#ifndef QT_NO_NETWORKPROXY
43 virtual void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)= 0;
44#endif
45};
46
48{
50 Q_MOC_INCLUDE(<QtNetwork/qauthenticator.h>)
51public:
52
54 static QAbstractSocketEngine *createSocketEngine(qintptr socketDescriptor, QObject *parent);
55
57
74 PathMtuInformation
75 };
76
78 WantNone = 0,
79 WantDatagramSender = 0x01,
80 WantDatagramDestination = 0x02,
81 WantDatagramHopLimit = 0x04,
82 WantStreamNumber = 0x08,
83 WantEndOfRecord = 0x10,
84
85 WantAll = 0xff
86 };
87 Q_DECLARE_FLAGS(PacketHeaderOptions, PacketHeaderOption)
88
89 virtual bool initialize(QAbstractSocket::SocketType type, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::IPv4Protocol) = 0;
90
91 virtual bool initialize(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = QAbstractSocket::ConnectedState) = 0;
92
93 virtual qintptr socketDescriptor() const = 0;
94
95 virtual bool isValid() const = 0;
96
97 virtual bool connectToHost(const QHostAddress &address, quint16 port) = 0;
98 virtual bool connectToHostByName(const QString &name, quint16 port) = 0;
99 virtual bool bind(const QHostAddress &address, quint16 port) = 0;
100 virtual bool listen(int backlog) = 0;
101 virtual qintptr accept() = 0;
102 virtual void close() = 0;
103
104 virtual qint64 bytesAvailable() const = 0;
105
106 virtual qint64 read(char *data, qint64 maxlen) = 0;
107 virtual qint64 write(const char *data, qint64 len) = 0;
108
109#ifndef QT_NO_UDPSOCKET
110#ifndef QT_NO_NETWORKINTERFACE
111 virtual bool joinMulticastGroup(const QHostAddress &groupAddress,
112 const QNetworkInterface &iface) = 0;
113 virtual bool leaveMulticastGroup(const QHostAddress &groupAddress,
114 const QNetworkInterface &iface) = 0;
116 virtual bool setMulticastInterface(const QNetworkInterface &iface) = 0;
117#endif // QT_NO_NETWORKINTERFACE
118
119 virtual bool hasPendingDatagrams() const = 0;
120 virtual qint64 pendingDatagramSize() const = 0;
121#endif // QT_NO_UDPSOCKET
122
123 virtual qint64 readDatagram(char *data, qint64 maxlen, QIpPacketHeader *header = nullptr,
124 PacketHeaderOptions = WantNone) = 0;
125 virtual qint64 writeDatagram(const char *data, qint64 len, const QIpPacketHeader &header) = 0;
126 virtual qint64 bytesToWrite() const = 0;
127
128 virtual int option(SocketOption option) const = 0;
129 virtual bool setOption(SocketOption option, int value) = 0;
130
131 virtual bool waitForRead(int msecs = 30000, bool *timedOut = nullptr) = 0;
132 virtual bool waitForWrite(int msecs = 30000, bool *timedOut = nullptr) = 0;
133 virtual bool waitForReadOrWrite(bool *readyToRead, bool *readyToWrite,
134 bool checkRead, bool checkWrite,
135 int msecs = 30000, bool *timedOut = nullptr) = 0;
136
138 QString errorString() const;
142
143 QHostAddress localAddress() const;
144 quint16 localPort() const;
145 QHostAddress peerAddress() const;
146 quint16 peerPort() const;
147 int inboundStreamCount() const;
148 int outboundStreamCount() const;
149
150 virtual bool isReadNotificationEnabled() const = 0;
151 virtual void setReadNotificationEnabled(bool enable) = 0;
152 virtual bool isWriteNotificationEnabled() const = 0;
153 virtual void setWriteNotificationEnabled(bool enable) = 0;
154 virtual bool isExceptionNotificationEnabled() const = 0;
156
157public Q_SLOTS:
158 void readNotification();
159 void writeNotification();
160 void closeNotification();
161 void exceptionNotification();
162 void connectionNotification();
163#ifndef QT_NO_NETWORKPROXY
164 void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator);
165#endif
166
167public:
168 void setReceiver(QAbstractSocketEngineReceiver *receiver);
169protected:
171
172 void setError(QAbstractSocket::SocketError error, const QString &errorString) const;
173 void setState(QAbstractSocket::SocketState state);
174 void setSocketType(QAbstractSocket::SocketType socketType);
176 void setLocalAddress(const QHostAddress &address);
177 void setLocalPort(quint16 port);
178 void setPeerAddress(const QHostAddress &address);
179 void setPeerPort(quint16 port);
180
181private:
182 Q_DECLARE_PRIVATE(QAbstractSocketEngine)
183 Q_DISABLE_COPY_MOVE(QAbstractSocketEngine)
184};
185
187{
188 Q_DECLARE_PUBLIC(QAbstractSocketEngine)
189public:
191
193 mutable bool hasSetSocketError;
205};
206
207
209{
210protected:
212 virtual ~QSocketEngineHandler();
214 const QNetworkProxy &, QObject *parent) = 0;
216
217private:
219};
220
221Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractSocketEngine::PacketHeaderOptions)
222
224
225#endif // QABSTRACTSOCKETENGINE_P_H
QAbstractSocketEngineReceiver * receiver
QAbstractSocket::NetworkLayerProtocol socketProtocol
QAbstractSocket::SocketState socketState
QAbstractSocket::SocketError socketError
QAbstractSocket::SocketType socketType
virtual void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)=0
virtual void writeNotification()=0
virtual void exceptionNotification()=0
virtual void connectionNotification()=0
virtual void closeNotification()=0
virtual void readNotification()=0
virtual bool leaveMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface)=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 isReadNotificationEnabled() const =0
PacketHeaderOption
Specifies which fields in the IP packet header are desired in the call to readDatagram().
virtual bool hasPendingDatagrams() const =0
virtual int option(SocketOption option) const =0
virtual qint64 readDatagram(char *data, qint64 maxlen, QIpPacketHeader *header=nullptr, PacketHeaderOptions=WantNone)=0
virtual bool waitForWrite(int msecs=30000, bool *timedOut=nullptr)=0
virtual void setReadNotificationEnabled(bool enable)=0
virtual bool setOption(SocketOption option, int value)=0
virtual qint64 pendingDatagramSize() const =0
virtual qint64 bytesToWrite() const =0
virtual void setExceptionNotificationEnabled(bool enable)=0
virtual bool isWriteNotificationEnabled() const =0
virtual bool waitForRead(int msecs=30000, bool *timedOut=nullptr)=0
virtual bool isExceptionNotificationEnabled() const =0
virtual bool waitForReadOrWrite(bool *readyToRead, bool *readyToWrite, bool checkRead, bool checkWrite, int msecs=30000, bool *timedOut=nullptr)=0
virtual qint64 writeDatagram(const char *data, qint64 len, const QIpPacketHeader &header)=0
virtual QNetworkInterface multicastInterface() const =0
The QAbstractSocket class provides the base functionality common to all socket types.
SocketState
This enum describes the different states in which a socket can be.
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.
The QHostAddress class provides an IP address.
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:90
virtual QAbstractSocketEngine * createSocketEngine(qintptr socketDescriptor, QObject *parent)=0
virtual QAbstractSocketEngine * createSocketEngine(QAbstractSocket::SocketType socketType, const QNetworkProxy &, QObject *parent)=0
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
else opt state
[0]
Combined button and popup list for selecting options.
static bool initialize()
Definition qctf.cpp:67
DBusConnection const char DBusError * error
static QString header(const QString &name)
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
EGLOutputPortEXT port
static QT_BEGIN_NAMESPACE const char * socketType(QSocketNotifier::Type type)
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
GLenum type
GLboolean enable
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint name
GLenum GLsizei len
GLuint GLuint64EXT address
GLuint GLenum option
static void setError(QJsonObject *response, const QString &msg)
#define Q_AUTOTEST_EXPORT
#define Q_OBJECT
#define Q_SLOTS
#define Q_MOC_INCLUDE(...)
unsigned short quint16
Definition qtypes.h:43
long long qint64
Definition qtypes.h:55
ptrdiff_t qintptr
Definition qtypes.h:71
ReturnedValue read(const char *data)
gzip write("uncompressed data")
sock connectToHost(url.host(), url.port(80))
QNetworkProxy proxy
[0]
socketLayer bind(QHostAddress::Any, 4000)
socketLayer listen()
config setProtocol(QSsl::TlsV1_2)
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent