Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qabstractsocketengine.cpp
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
// Qt-Security score:significant reason:default
4
5
#
include
"qabstractsocketengine_p.h"
6
7
#
include
"qnativesocketengine_p.h"
8
9
#
include
"qmutex.h"
10
#
include
"qnetworkproxy.h"
11
12
QT_BEGIN_NAMESPACE
13
14
QAbstractSocketEngineReceiver::~QAbstractSocketEngineReceiver() =
default
;
15
16
class
QSocketEngineHandlerList
:
public
QList
<
QSocketEngineHandler
*>
17
{
18
public
:
19
QMutex
mutex
;
20
};
21
22
Q_GLOBAL_STATIC(QSocketEngineHandlerList, socketHandlers)
23
24
QSocketEngineHandler::QSocketEngineHandler()
25
{
26
if
(!socketHandlers())
27
return
;
28
QMutexLocker locker(&socketHandlers()->mutex);
29
socketHandlers()->prepend(
this
);
30
}
31
32
QSocketEngineHandler::~QSocketEngineHandler()
33
{
34
if
(!socketHandlers())
35
return
;
36
QMutexLocker locker(&socketHandlers()->mutex);
37
socketHandlers()->removeAll(
this
);
38
}
39
40
QAbstractSocketEnginePrivate::QAbstractSocketEnginePrivate()
41
: socketError(QAbstractSocket::UnknownSocketError)
42
, hasSetSocketError(
false
)
43
, socketErrorString(QLatin1StringView(QT_TRANSLATE_NOOP(QSocketLayer,
"Unknown error"
)))
44
, socketState(QAbstractSocket::UnconnectedState)
45
, socketType(QAbstractSocket::UnknownSocketType)
46
, socketProtocol(QAbstractSocket::UnknownNetworkLayerProtocol)
47
, localPort(0)
48
, peerPort(0)
49
, inboundStreamCount(0)
50
, outboundStreamCount(0)
51
, receiver(
nullptr
)
52
{
53
}
54
55
QAbstractSocketEngine::QAbstractSocketEngine(QObject *parent)
56
: QObject(*
new
QAbstractSocketEnginePrivate(), parent)
57
{
58
}
59
60
QAbstractSocketEngine::QAbstractSocketEngine(QAbstractSocketEnginePrivate &dd, QObject* parent)
61
: QObject(dd, parent)
62
{
63
}
64
65
QAbstractSocketEngine *QAbstractSocketEngine::createSocketEngine(QAbstractSocket::SocketType socketType,
const
QNetworkProxy &proxy, QObject *parent)
66
{
67
#
ifndef
QT_NO_NETWORKPROXY
68
// proxy type must have been resolved by now
69
if
(proxy.type() == QNetworkProxy::DefaultProxy)
70
return
nullptr
;
71
#
endif
72
73
QMutexLocker locker(&socketHandlers()->mutex);
74
for
(
int
i = 0; i < socketHandlers()->size(); i++) {
75
if
(QAbstractSocketEngine *ret = socketHandlers()->at(i)->createSocketEngine(socketType, proxy, parent))
76
return
ret;
77
}
78
79
#
ifndef
QT_NO_NETWORKPROXY
80
// only NoProxy can have reached here
81
if
(proxy.type() != QNetworkProxy::NoProxy)
82
return
nullptr
;
83
#
endif
84
85
return
new
QNativeSocketEngine(parent);
86
}
87
88
QAbstractSocketEngine *QAbstractSocketEngine::createSocketEngine(qintptr socketDescripter, QObject *parent)
89
{
90
QMutexLocker locker(&socketHandlers()->mutex);
91
for
(
int
i = 0; i < socketHandlers()->size(); i++) {
92
if
(QAbstractSocketEngine *ret = socketHandlers()->at(i)->createSocketEngine(socketDescripter, parent))
93
return
ret;
94
}
95
return
new
QNativeSocketEngine(parent);
96
}
97
98
QAbstractSocket::SocketError QAbstractSocketEngine::error()
const
99
{
100
return
d_func()->socketError;
101
}
102
103
QString QAbstractSocketEngine::errorString()
const
104
{
105
return
d_func()->socketErrorString;
106
}
107
108
void
QAbstractSocketEngine::setError(QAbstractSocket::SocketError error,
const
QString &errorString)
const
109
{
110
Q_D(
const
QAbstractSocketEngine);
111
d->socketError = error;
112
d->socketErrorString = errorString;
113
}
114
115
void
QAbstractSocketEngine::setReceiver(QAbstractSocketEngineReceiver *receiver)
116
{
117
d_func()->receiver = receiver;
118
}
119
120
void
QAbstractSocketEngine::readNotification()
121
{
122
if
(QAbstractSocketEngineReceiver *receiver = d_func()->receiver)
123
receiver->readNotification();
124
}
125
126
void
QAbstractSocketEngine::writeNotification()
127
{
128
if
(QAbstractSocketEngineReceiver *receiver = d_func()->receiver)
129
receiver->writeNotification();
130
}
131
132
void
QAbstractSocketEngine::exceptionNotification()
133
{
134
if
(QAbstractSocketEngineReceiver *receiver = d_func()->receiver)
135
receiver->exceptionNotification();
136
}
137
138
void
QAbstractSocketEngine::closeNotification()
139
{
140
if
(QAbstractSocketEngineReceiver *receiver = d_func()->receiver)
141
receiver->closeNotification();
142
}
143
144
void
QAbstractSocketEngine::connectionNotification()
145
{
146
if
(QAbstractSocketEngineReceiver *receiver = d_func()->receiver)
147
receiver->connectionNotification();
148
}
149
150
#
ifndef
QT_NO_NETWORKPROXY
151
void
QAbstractSocketEngine::proxyAuthenticationRequired(
const
QNetworkProxy &proxy, QAuthenticator *authenticator)
152
{
153
if
(QAbstractSocketEngineReceiver *receiver = d_func()->receiver)
154
receiver->proxyAuthenticationRequired(proxy, authenticator);
155
}
156
#
endif
157
158
159
QAbstractSocket::SocketState QAbstractSocketEngine::state()
const
160
{
161
return
d_func()->socketState;
162
}
163
164
void
QAbstractSocketEngine::setState(QAbstractSocket::SocketState state)
165
{
166
d_func()->socketState = state;
167
}
168
169
QAbstractSocket::SocketType QAbstractSocketEngine::socketType()
const
170
{
171
return
d_func()->socketType;
172
}
173
174
void
QAbstractSocketEngine::setSocketType(QAbstractSocket::SocketType socketType)
175
{
176
d_func()->socketType = socketType;
177
}
178
179
QAbstractSocket::NetworkLayerProtocol QAbstractSocketEngine::protocol()
const
180
{
181
return
d_func()->socketProtocol;
182
}
183
184
void
QAbstractSocketEngine::setProtocol(QAbstractSocket::NetworkLayerProtocol protocol)
185
{
186
d_func()->socketProtocol = protocol;
187
}
188
189
QHostAddress QAbstractSocketEngine::localAddress()
const
190
{
191
return
d_func()->localAddress;
192
}
193
194
void
QAbstractSocketEngine::setLocalAddress(
const
QHostAddress &address)
195
{
196
d_func()->localAddress = address;
197
}
198
199
quint16 QAbstractSocketEngine::localPort()
const
200
{
201
return
d_func()->localPort;
202
}
203
204
void
QAbstractSocketEngine::setLocalPort(quint16 port)
205
{
206
d_func()->localPort = port;
207
}
208
209
QHostAddress QAbstractSocketEngine::peerAddress()
const
210
{
211
return
d_func()->peerAddress;
212
}
213
214
void
QAbstractSocketEngine::setPeerAddress(
const
QHostAddress &address)
215
{
216
d_func()->peerAddress = address;
217
}
218
219
quint16 QAbstractSocketEngine::peerPort()
const
220
{
221
return
d_func()->peerPort;
222
}
223
224
void
QAbstractSocketEngine::setPeerPort(quint16 port)
225
{
226
d_func()->peerPort = port;
227
}
228
229
int
QAbstractSocketEngine::inboundStreamCount()
const
230
{
231
return
d_func()->inboundStreamCount;
232
}
233
234
int
QAbstractSocketEngine::outboundStreamCount()
const
235
{
236
return
d_func()->outboundStreamCount;
237
}
238
239
QT_END_NAMESPACE
240
241
#
include
"moc_qabstractsocketengine_p.cpp"
QSocketEngineHandlerList
Definition
qabstractsocketengine.cpp:17
QSocketEngineHandlerList::mutex
QMutex mutex
Definition
qabstractsocketengine.cpp:19
qtbase
src
network
socket
qabstractsocketengine.cpp
Generated on
for Qt by
1.18.0