qnativesocketengine.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/network/socket/qnativesocketengine.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8QNativeSocketEnginePrivate::QNativeSocketEnginePrivate() :-
9 socketDescriptor(-1),-
10 readNotifier(0),-
11 writeNotifier(0),-
12 exceptNotifier(0)-
13{-
14-
15-
16-
17}-
18-
19-
20-
21-
22QNativeSocketEnginePrivate::~QNativeSocketEnginePrivate()-
23{-
24}-
25-
26-
27-
28-
29-
30-
31-
32void QNativeSocketEnginePrivate::setError(QAbstractSocket::SocketError error, ErrorString errorString) const-
33{-
34 if (hasSetSocketError) {-
35-
36-
37-
38-
39-
40-
41-
42 return;-
43 }-
44 if (error != QAbstractSocket::SocketError(11))-
45 hasSetSocketError = true;-
46-
47 socketError = error;-
48-
49 switch (errorString) {-
50 case NonBlockingInitFailedErrorString:-
51 socketErrorString = QNativeSocketEngine::tr("Unable to initialize non-blocking socket");-
52 break;-
53 case BroadcastingInitFailedErrorString:-
54 socketErrorString = QNativeSocketEngine::tr("Unable to initialize broadcast socket");-
55 break;-
56-
57 case NoIpV6ErrorString:-
58 socketErrorString = QNativeSocketEngine::tr("Attempt to use IPv6 socket on a platform with no IPv6 support");-
59 break;-
60 case RemoteHostClosedErrorString:-
61 socketErrorString = QNativeSocketEngine::tr("The remote host closed the connection");-
62 break;-
63 case TimeOutErrorString:-
64 socketErrorString = QNativeSocketEngine::tr("Network operation timed out");-
65 break;-
66 case ResourceErrorString:-
67 socketErrorString = QNativeSocketEngine::tr("Out of resources");-
68 break;-
69 case OperationUnsupportedErrorString:-
70 socketErrorString = QNativeSocketEngine::tr("Unsupported socket operation");-
71 break;-
72 case ProtocolUnsupportedErrorString:-
73 socketErrorString = QNativeSocketEngine::tr("Protocol type not supported");-
74 break;-
75 case InvalidSocketErrorString:-
76 socketErrorString = QNativeSocketEngine::tr("Invalid socket descriptor");-
77 break;-
78 case HostUnreachableErrorString:-
79 socketErrorString = QNativeSocketEngine::tr("Host unreachable");-
80 break;-
81 case NetworkUnreachableErrorString:-
82 socketErrorString = QNativeSocketEngine::tr("Network unreachable");-
83 break;-
84 case AccessErrorString:-
85 socketErrorString = QNativeSocketEngine::tr("Permission denied");-
86 break;-
87 case ConnectionTimeOutErrorString:-
88 socketErrorString = QNativeSocketEngine::tr("Connection timed out");-
89 break;-
90 case ConnectionRefusedErrorString:-
91 socketErrorString = QNativeSocketEngine::tr("Connection refused");-
92 break;-
93 case AddressInuseErrorString:-
94 socketErrorString = QNativeSocketEngine::tr("The bound address is already in use");-
95 break;-
96 case AddressNotAvailableErrorString:-
97 socketErrorString = QNativeSocketEngine::tr("The address is not available");-
98 break;-
99 case AddressProtectedErrorString:-
100 socketErrorString = QNativeSocketEngine::tr("The address is protected");-
101 break;-
102 case DatagramTooLargeErrorString:-
103 socketErrorString = QNativeSocketEngine::tr("Datagram was too large to send");-
104 break;-
105 case SendDatagramErrorString:-
106 socketErrorString = QNativeSocketEngine::tr("Unable to send a message");-
107 break;-
108 case ReceiveDatagramErrorString:-
109 socketErrorString = QNativeSocketEngine::tr("Unable to receive a message");-
110 break;-
111 case WriteErrorString:-
112 socketErrorString = QNativeSocketEngine::tr("Unable to write");-
113 break;-
114 case ReadErrorString:-
115 socketErrorString = QNativeSocketEngine::tr("Network error");-
116 break;-
117 case PortInuseErrorString:-
118 socketErrorString = QNativeSocketEngine::tr("Another socket is already listening on the same port");-
119 break;-
120 case NotSocketErrorString:-
121 socketErrorString = QNativeSocketEngine::tr("Operation on non-socket");-
122 break;-
123 case InvalidProxyTypeString:-
124 socketErrorString = QNativeSocketEngine::tr("The proxy type is invalid for this operation");-
125 break;-
126 case TemporaryErrorString:-
127 socketErrorString = QNativeSocketEngine::tr("Temporary error");-
128 break;-
129 case NetworkDroppedConnectionErrorString:-
130 socketErrorString = QNativeSocketEngine::tr("Network dropped connection on reset");-
131 break;-
132 case ConnectionResetErrorString:-
133 socketErrorString = QNativeSocketEngine::tr("Connection reset by peer");-
134 break;-
135 case UnknownSocketErrorString:-
136 socketErrorString = QNativeSocketEngine::tr("Unknown error");-
137 break;-
138 }-
139}-
140QHostAddress QNativeSocketEnginePrivate::adjustAddressProtocol(const QHostAddress &address) const-
141{-
142 QAbstractSocket::NetworkLayerProtocol targetProtocol = socketProtocol;-
143 if (__builtin_expect(!!(targetProtocol == QAbstractSocket::UnknownNetworkLayerProtocol), true))-
144 return address;-
145-
146 QAbstractSocket::NetworkLayerProtocol sourceProtocol = address.protocol();-
147-
148 if (targetProtocol == QAbstractSocket::AnyIPProtocol)-
149 targetProtocol = QAbstractSocket::IPv6Protocol;-
150 if (targetProtocol == QAbstractSocket::IPv6Protocol && sourceProtocol == QAbstractSocket::IPv4Protocol) {-
151-
152 return QHostAddress(address.toIPv6Address());-
153 }-
154-
155 if (targetProtocol == QAbstractSocket::IPv4Protocol && sourceProtocol == QAbstractSocket::IPv6Protocol) {-
156-
157 quint32 ip4 = address.toIPv4Address();-
158 if (ip4)-
159 return QHostAddress(ip4);-
160 }-
161-
162 return address;-
163}-
164-
165bool QNativeSocketEnginePrivate::checkProxy(const QHostAddress &address)-
166{-
167 if (address.isLoopback())-
168 return true;-
169-
170-
171 QObject *parent = q_func()->parent();-
172 QNetworkProxy proxy;-
173 if (QAbstractSocket *socket = qobject_cast<QAbstractSocket *>(parent)) {-
174 proxy = socket->proxy();-
175 } else if (QTcpServer *server = qobject_cast<QTcpServer *>(parent)) {-
176 proxy = server->proxy();-
177 } else {-
178-
179 return true;-
180 }-
181-
182 if (proxy.type() == QNetworkProxy::DefaultProxy)-
183 proxy = QNetworkProxy::applicationProxy();-
184-
185 if (proxy.type() != QNetworkProxy::DefaultProxy &&-
186 proxy.type() != QNetworkProxy::NoProxy) {-
187-
188 setError(QAbstractSocket::UnsupportedSocketOperationError,-
189 QNativeSocketEnginePrivate::InvalidProxyTypeString);-
190 return false;-
191 }-
192-
193-
194 return true;-
195}-
196-
197-
198-
199-
200-
201-
202QNativeSocketEngine::QNativeSocketEngine(QObject *parent)-
203 : QAbstractSocketEngine(*new QNativeSocketEnginePrivate(), parent)-
204{-
205}-
206-
207-
208-
209-
210QNativeSocketEngine::~QNativeSocketEngine()-
211{-
212 close();-
213}-
214bool QNativeSocketEngine::initialize(QAbstractSocket::SocketType socketType, QAbstractSocket::NetworkLayerProtocol protocol)-
215{-
216 QNativeSocketEnginePrivate * const d = d_func();-
217 if (isValid())-
218 close();-
219-
220-
221 if (!d->createNewSocket(socketType, protocol)) {-
222 return false;-
223 }-
224-
225 if (socketType == QAbstractSocket::UdpSocket) {-
226-
227 if (!setOption(BroadcastSocketOption, 1)) {-
228 d->setError(QAbstractSocket::UnsupportedSocketOperationError,-
229 QNativeSocketEnginePrivate::BroadcastingInitFailedErrorString);-
230 close();-
231 return false;-
232 }-
233-
234-
235 setOption(ReceivePacketInformation, 1);-
236 setOption(ReceiveHopLimit, 1);-
237 }-
238-
239-
240-
241 if (socketType == QAbstractSocket::TcpSocket-
242 && !setOption(ReceiveOutOfBandData, 1)) {-
243 QMessageLogger(__FILE__, 440447, __PRETTY_FUNCTION__).warning("QNativeSocketEngine::initialize unable to inline out-of-band data");-
244 }-
245 return true;-
246}-
247bool QNativeSocketEngine::initialize(qintptr socketDescriptor, QAbstractSocket::SocketState socketState)-
248{-
249 QNativeSocketEnginePrivate * const d = d_func();-
250-
251 if (isValid())-
252 close();-
253-
254 d->socketDescriptor = socketDescriptor;-
255-
256-
257 if (!d->fetchConnectionParameters()) {-
258-
259-
260-
261-
262 d->socketDescriptor = -1;-
263 return false;-
264 }-
265-
266 if (d->socketType != QAbstractSocket::UnknownSocketType) {-
267-
268 if (!setOption(NonBlockingSocketOption, 1)) {-
269 d->setError(QAbstractSocket::UnsupportedSocketOperationError,-
270 QNativeSocketEnginePrivate::NonBlockingInitFailedErrorString);-
271 close();-
272 return false;-
273 }-
274-
275-
276 if (d->socketType == QAbstractSocket::UdpSocket-
277 && !setOption(BroadcastSocketOption, 1)) {-
278 d->setError(QAbstractSocket::UnsupportedSocketOperationError,-
279 QNativeSocketEnginePrivate::BroadcastingInitFailedErrorString);-
280 close();-
281 return false;-
282 }-
283 }-
284-
285 d->socketState = socketState;-
286 return true;-
287}-
288-
289-
290-
291-
292-
293-
294bool QNativeSocketEngine::isValid() const-
295{-
296 const QNativeSocketEnginePrivate * const d = d_func();-
297 return d->socketDescriptor != -1;-
298}-
299-
300-
301-
302-
303-
304qintptr QNativeSocketEngine::socketDescriptor() const-
305{-
306 const QNativeSocketEnginePrivate * const d = d_func();-
307 return d->socketDescriptor;-
308}-
309bool QNativeSocketEngine::connectToHost(const QHostAddress &address, quint16 port)-
310{-
311 QNativeSocketEnginePrivate * const d = d_func();-
312 do { if (!isValid()) { QMessageLogger(__FILE__, 558565, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::connectToHost()"" was called on an uninitialized socket device"); return false; } } while (0);-
313-
314 if (!d->checkProxy(address))-
315 return false;-
316-
317 do { if (d->socketState != (QAbstractSocket::BoundState) && d->socketState != (QAbstractSocket::UnconnectedState) && d->socketState != (QAbstractSocket::ConnectingState)) { QMessageLogger(-
318 __FILE__-
319 ,-
320 564571-
321 , __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::connectToHost()"" was called" " not in ""QAbstractSocket::BoundState"" or ""QAbstractSocket::UnconnectedState"); return (false); } } while (0)-
322 ;-
323-
324 d->peerAddress = address;-
325 d->peerPort = port;-
326 bool connected = d->nativeConnect(d->adjustAddressProtocol(address), port);-
327 if (connected)-
328 d->fetchConnectionParameters();-
329-
330 return connected;-
331}-
332-
333-
334-
335-
336-
337void QNativeSocketEngine::connectionNotification()-
338{-
339 QNativeSocketEnginePrivate * const d = d_func();-
340 ((!(state() == QAbstractSocket::ConnectingState)) ? qt_assert("state() == QAbstractSocket::ConnectingState",__FILE__,582589) : qt_noop());-
341-
342 connectToHost(d->peerAddress, d->peerPort);-
343 if (state() != QAbstractSocket::ConnectingState) {-
344-
345 QAbstractSocketEngine::connectionNotification();-
346 }-
347}-
348bool QNativeSocketEngine::connectToHostByName(const QString &name, quint16 port)-
349{-
350 (void)name;;-
351 (void)port;;-
352 QNativeSocketEnginePrivate * const d = d_func();-
353 d->setError(QAbstractSocket::UnsupportedSocketOperationError,-
354 QNativeSocketEnginePrivate::OperationUnsupportedErrorString);-
355 return false;-
356}-
357bool QNativeSocketEngine::bind(const QHostAddress &address, quint16 port)-
358{-
359 QNativeSocketEnginePrivate * const d = d_func();-
360 do { if (!isValid()) { QMessageLogger(__FILE__, 621628, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::bind()"" was called on an uninitialized socket device"); return false; } } while (0);-
361-
362 if (!d->checkProxy(address))-
363 return false;-
364-
365 do { if (d->socketState != (QAbstractSocket::UnconnectedState)) { QMessageLogger(__FILE__, 626633, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::bind()"" was not called in ""QAbstractSocket::UnconnectedState"); return (false); } } while (0);-
366-
367 if (!d->nativeBind(d->adjustAddressProtocol(address), port))-
368 return false;-
369-
370 d->fetchConnectionParameters();-
371 return true;-
372}-
373bool QNativeSocketEngine::listen()-
374{-
375 QNativeSocketEnginePrivate * const d = d_func();-
376 do { if (!isValid()) { QMessageLogger(__FILE__, 653660, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::listen()"" was called on an uninitialized socket device"); return false; } } while (0);-
377 do { if (d->socketState != (QAbstractSocket::BoundState)) { QMessageLogger(__FILE__, 654661, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::listen()"" was not called in ""QAbstractSocket::BoundState"); return (false); } } while (0);-
378 do { if (d->socketType != (QAbstractSocket::TcpSocket)) { QMessageLogger(__FILE__, 655662, __PRETTY_FUNCTION__).warning("QNativeSocketEngine::listen()"" was called by a" " socket other than ""QAbstractSocket::TcpSocket"""); return (false); } } while (0);-
379-
380-
381-
382-
383-
384 return d->nativeListen(50);-
385}-
386int QNativeSocketEngine::accept()-
387{-
388 QNativeSocketEnginePrivate * const d = d_func();-
389 do { if (!isValid()) { QMessageLogger(__FILE__, 674681, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::accept()"" was called on an uninitialized socket device"); return -1; } } while (0);-
390 do { if (d->socketState != (QAbstractSocket::ListeningState)) { QMessageLogger(__FILE__, 675682, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::accept()"" was not called in ""QAbstractSocket::ListeningState"); return (-1); } } while (0);-
391 do { if (d->socketType != (QAbstractSocket::TcpSocket)) { QMessageLogger(__FILE__, 676683, __PRETTY_FUNCTION__).warning("QNativeSocketEngine::accept()"" was called by a" " socket other than ""QAbstractSocket::TcpSocket"""); return (-1); } } while (0);-
392-
393 return d->nativeAccept();-
394}-
395qint64 QNativeSocketEngine::bytesAvailable() const-
396{-
397 const QNativeSocketEnginePrivate * const d = d_func();-
398 do { if (!isValid()) { QMessageLogger(__FILE__, 692699, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::bytesAvailable()"" was called on an uninitialized socket device"); return -1; } } while (0);-
399 do { if (d->socketState == (QAbstractSocket::UnconnectedState)) { QMessageLogger(__FILE__, 693700, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::bytesAvailable()"" was called in ""QAbstractSocket::UnconnectedState"); return (-1); } } while (0);-
400-
401 return d->nativeBytesAvailable();-
402}-
403-
404-
405-
406-
407-
408-
409-
410bool QNativeSocketEngine::joinMulticastGroup(const QHostAddress &groupAddress,-
411 const QNetworkInterface &iface)-
412{-
413 QNativeSocketEnginePrivate * const d = d_func();-
414 do { if (!isValid()) { QMessageLogger(__FILE__, 708715, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::joinMulticastGroup()"" was called on an uninitialized socket device"); return false; } } while (0);-
415 do { if (d->socketState != (QAbstractSocket::BoundState)) { QMessageLogger(__FILE__, 709716, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::joinMulticastGroup()"" was not called in ""QAbstractSocket::BoundState"); return (false); } } while (0);-
416 do { if (d->socketType != (QAbstractSocket::UdpSocket)) { QMessageLogger(__FILE__, 710717, __PRETTY_FUNCTION__).warning("QNativeSocketEngine::joinMulticastGroup()"" was called by a" " socket other than ""QAbstractSocket::UdpSocket"""); return (false); } } while (0);-
417-
418-
419-
420-
421-
422 if (groupAddress.protocol() == QAbstractSocket::IPv4Protocol &&-
423 (d->socketProtocol == QAbstractSocket::IPv6Protocol ||-
424 d->socketProtocol == QAbstractSocket::AnyIPProtocol)) {-
425 QMessageLogger(__FILE__, 719726, __PRETTY_FUNCTION__).warning("QAbstractSocket: cannot bind to QHostAddress::Any (or an IPv6 address) and join an IPv4 multicast group;"-
426 " bind to QHostAddress::AnyIPv4 instead if you want to do this");-
427 return false;-
428 }-
429-
430 return d->nativeJoinMulticastGroup(groupAddress, iface);-
431}-
432-
433-
434-
435-
436bool QNativeSocketEngine::leaveMulticastGroup(const QHostAddress &groupAddress,-
437 const QNetworkInterface &iface)-
438{-
439 QNativeSocketEnginePrivate * const d = d_func();-
440 do { if (!isValid()) { QMessageLogger(__FILE__, 734741, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::leaveMulticastGroup()"" was called on an uninitialized socket device"); return false; } } while (0);-
441 do { if (d->socketState != (QAbstractSocket::BoundState)) { QMessageLogger(__FILE__, 735742, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::leaveMulticastGroup()"" was not called in ""QAbstractSocket::BoundState"); return (false); } } while (0);-
442 do { if (d->socketType != (QAbstractSocket::UdpSocket)) { QMessageLogger(__FILE__, 736743, __PRETTY_FUNCTION__).warning("QNativeSocketEngine::leaveMulticastGroup()"" was called by a" " socket other than ""QAbstractSocket::UdpSocket"""); return (false); } } while (0);-
443 return d->nativeLeaveMulticastGroup(groupAddress, iface);-
444}-
445-
446-
447QNetworkInterface QNativeSocketEngine::multicastInterface() const-
448{-
449 const QNativeSocketEnginePrivate * const d = d_func();-
450 do { if (!isValid()) { QMessageLogger(__FILE__, 744751, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::multicastInterface()"" was called on an uninitialized socket device"); return QNetworkInterface(); } } while (0);-
451 do { if (d->socketType != (QAbstractSocket::UdpSocket)) { QMessageLogger(__FILE__, 745752, __PRETTY_FUNCTION__).warning("QNativeSocketEngine::multicastInterface()"" was called by a" " socket other than ""QAbstractSocket::UdpSocket"""); return (QNetworkInterface()); } } while (0);-
452 return d->nativeMulticastInterface();-
453}-
454-
455-
456bool QNativeSocketEngine::setMulticastInterface(const QNetworkInterface &iface)-
457{-
458 QNativeSocketEnginePrivate * const d = d_func();-
459 do { if (!isValid()) { QMessageLogger(__FILE__, 753760, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::setMulticastInterface()"" was called on an uninitialized socket device"); return false; } } while (0);-
460 do { if (d->socketType != (QAbstractSocket::UdpSocket)) { QMessageLogger(__FILE__, 754761, __PRETTY_FUNCTION__).warning("QNativeSocketEngine::setMulticastInterface()"" was called by a" " socket other than ""QAbstractSocket::UdpSocket"""); return (false); } } while (0);-
461 return d->nativeSetMulticastInterface(iface);-
462}-
463bool QNativeSocketEngine::hasPendingDatagrams() const-
464{-
465 const QNativeSocketEnginePrivate * const d = d_func();-
466 do { if (!isValid()) { QMessageLogger(__FILE__, 768775, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::hasPendingDatagrams()"" was called on an uninitialized socket device"); return false; } } while (0);-
467 do { if (d->socketState == (QAbstractSocket::UnconnectedState)) { QMessageLogger(__FILE__, 769776, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::hasPendingDatagrams()"" was called in ""QAbstractSocket::UnconnectedState"); return (false); } } while (0);-
468 do { if (d->socketType != (QAbstractSocket::UdpSocket)) { QMessageLogger(__FILE__, 770777, __PRETTY_FUNCTION__).warning("QNativeSocketEngine::hasPendingDatagrams()"" was called by a" " socket other than ""QAbstractSocket::UdpSocket"""); return (false); } } while (0);-
469-
470 return d->nativeHasPendingDatagrams();-
471}-
472-
473-
474-
475-
476-
477-
478-
479qint64 QNativeSocketEngine::pendingDatagramSize() const-
480{-
481 const QNativeSocketEnginePrivate * const d = d_func();-
482 do { if (!isValid()) { QMessageLogger(__FILE__, 784791, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::pendingDatagramSize()"" was called on an uninitialized socket device"); return -1; } } while (0);-
483 do { if (d->socketType != (QAbstractSocket::UdpSocket)) { QMessageLogger(__FILE__, 785792, __PRETTY_FUNCTION__).warning("QNativeSocketEngine::pendingDatagramSize()"" was called by a" " socket other than ""QAbstractSocket::UdpSocket"""); return (-1); } } while (0);-
484-
485 return d->nativePendingDatagramSize();-
486}-
487qint64 QNativeSocketEngine::readDatagram(char *data, qint64 maxSize, QIpPacketHeader *header,-
488 PacketHeaderOptions options)-
489{-
490 QNativeSocketEnginePrivate * const d = d_func();-
491 do { if (!isValid()) { QMessageLogger(__FILE__, 808815, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::readDatagram()"" was called on an uninitialized socket device"); return -1; } } while (0);-
492 do { if (d->socketType != (QAbstractSocket::UdpSocket)) { QMessageLogger(__FILE__, 809816, __PRETTY_FUNCTION__).warning("QNativeSocketEngine::readDatagram()"" was called by a" " socket other than ""QAbstractSocket::UdpSocket"""); return (-1); } } while (0);-
493-
494 return d->nativeReceiveDatagram(data, maxSize, header, options);-
495}-
496qint64 QNativeSocketEngine::writeDatagram(const char *data, qint64 size, const QIpPacketHeader &header)-
497{-
498 QNativeSocketEnginePrivate * const d = d_func();-
499 do { if (!isValid()) { QMessageLogger(__FILE__, 839846, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::writeDatagram()"" was called on an uninitialized socket device"); return -1; } } while (0);-
500 do { if (d->socketType != (QAbstractSocket::UdpSocket)) { QMessageLogger(__FILE__, 840847, __PRETTY_FUNCTION__).warning("QNativeSocketEngine::writeDatagram()"" was called by a" " socket other than ""QAbstractSocket::UdpSocket"""); return (-1); } } while (0);-
501-
502 return d->nativeSendDatagram(data, size, header);-
503}-
504qint64 QNativeSocketEngine::write(const char *data, qint64 size)-
505{-
506 QNativeSocketEnginePrivate * const d = d_func();-
507 do { if (!isValid()) { QMessageLogger(__FILE__, 857864, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::write()"" was called on an uninitialized socket device"); return -1; } } while (0);-
508 do { if (d->socketState != (QAbstractSocket::ConnectedState)) { QMessageLogger(__FILE__, 858865, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::write()"" was not called in ""QAbstractSocket::ConnectedState"); return (-1); } } while (0);-
509 return d->nativeWrite(data, size);-
510}-
511-
512-
513qint64 QNativeSocketEngine::bytesToWrite() const-
514{-
515 return 0;-
516}-
517-
518-
519-
520-
521-
522qint64 QNativeSocketEngine::read(char *data, qint64 maxSize)-
523{-
524 QNativeSocketEnginePrivate * const d = d_func();-
525 do { if (!isValid()) { QMessageLogger(__FILE__, 875882, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::read()"" was called on an uninitialized socket device"); return -1; } } while (0);-
526 do { if (d->socketState != (QAbstractSocket::ConnectedState) && d->socketState != (QAbstractSocket::BoundState)) { QMessageLogger(__FILE__, 876883, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::read()"" was called" " not in ""QAbstractSocket::ConnectedState"" or ""QAbstractSocket::BoundState"); return (-1); } } while (0);-
527-
528 qint64 readBytes = d->nativeRead(data, maxSize);-
529-
530-
531 if (readBytes == 0 && d->socketType == QAbstractSocket::TcpSocket) {-
532 d->setError(QAbstractSocket::RemoteHostClosedError,-
533 QNativeSocketEnginePrivate::RemoteHostClosedErrorString);-
534 close();-
535 return -1;-
536 } else if (readBytes == -1) {-
537 if (!d->hasSetSocketError) {-
538 d->hasSetSocketError = true;-
539 d->socketError = QAbstractSocket::NetworkError;-
540 d->socketErrorString = qt_error_string();-
541 }-
542 close();-
543 return -1;-
544 }-
545 return readBytes;-
546}-
547-
548-
549-
550-
551-
552void QNativeSocketEngine::close()-
553{-
554 QNativeSocketEnginePrivate * const d = d_func();-
555 if (d->readNotifier
d->readNotifierDescription
TRUEevaluated 5137 times by 31 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • tst_qsslsocket - unknown status
  • ...
FALSEevaluated 73055 times by 32 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_platformsocketengine - unknown status
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • ...
)
5137-73055
556 d->readNotifier->setEnabled(false);
executed 5137 times by 31 tests: d->readNotifier->setEnabled(false);
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • tst_qsslsocket - unknown status
  • ...
5137
557 if (d->writeNotifier
d->writeNotifierDescription
TRUEevaluated 4264 times by 29 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • tst_qsslsocket - unknown status
  • tst_qsslsocket_onDemandCertificates_member - unknown status
  • tst_qsslsocket_onDemandCertificates_static - unknown status
  • ...
FALSEevaluated 73928 times by 32 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_platformsocketengine - unknown status
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • ...
)
4264-73928
558 d->writeNotifier->setEnabled(false);
executed 4264 times by 29 tests: d->writeNotifier->setEnabled(false);
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • tst_qsslsocket - unknown status
  • tst_qsslsocket_onDemandCertificates_member - unknown status
  • tst_qsslsocket_onDemandCertificates_static - unknown status
  • ...
4264
559 if (d->exceptNotifier
d->exceptNotifierDescription
TRUEnever evaluated
FALSEevaluated 78192 times by 32 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_platformsocketengine - unknown status
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • ...
)
0-78192
560 d->exceptNotifier->setEnabled(false);
never executed: d->exceptNotifier->setEnabled(false);
0
561-
562 if(d->socketDescriptor != -1
d->socketDescriptor != -1Description
TRUEevaluated 71285 times by 32 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_platformsocketengine - unknown status
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • ...
FALSEevaluated 6907 times by 32 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_platformsocketengine - unknown status
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • ...
) {
6907-71285
563 d->nativeClose();-
564 d->socketDescriptor = -1;-
565 }
executed 71284 times by 32 tests: end of block
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_platformsocketengine - unknown status
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • ...
71284
566 d->socketState = QAbstractSocket::UnconnectedState;-
567 d->hasSetSocketError = false;-
568 d->localPort = 0;-
569 d->localAddress.clear();-
570 d->peerPort = 0;-
571 d->peerAddress.clear();-
572 d->inboundStreamCount = d->outboundStreamCount = 0;-
573 if (d->readNotifier
d->readNotifierDescription
TRUEevaluated 5136 times by 31 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • tst_qsslsocket - unknown status
  • ...
FALSEevaluated 73055 times by 32 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_platformsocketengine - unknown status
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • ...
) {
5136-73055
574 qDeleteInEventHandler(d->readNotifier);-
575 d->readNotifier = 0;-
576 }
executed 5136 times by 31 tests: end of block
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • tst_qsslsocket - unknown status
  • ...
5136
577 if (d->writeNotifier
d->writeNotifierDescription
TRUEevaluated 4263 times by 29 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • tst_qsslsocket - unknown status
  • tst_qsslsocket_onDemandCertificates_member - unknown status
  • tst_qsslsocket_onDemandCertificates_static - unknown status
  • ...
FALSEevaluated 73928 times by 32 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_platformsocketengine - unknown status
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • ...
) {
4263-73928
578 qDeleteInEventHandler(d->writeNotifier);-
579 d->writeNotifier = 0;-
580 }
executed 4263 times by 29 tests: end of block
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • tst_qsslsocket - unknown status
  • tst_qsslsocket_onDemandCertificates_member - unknown status
  • tst_qsslsocket_onDemandCertificates_static - unknown status
  • ...
4263
581 if (d->exceptNotifier
d->exceptNotifierDescription
TRUEnever evaluated
FALSEevaluated 78191 times by 32 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_platformsocketengine - unknown status
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • ...
) {
0-78191
582 qDeleteInEventHandler(d->exceptNotifier);-
583 d->exceptNotifier = 0;-
584 }
never executed: end of block
0
585}
executed 78191 times by 32 tests: end of block
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_platformsocketengine - unknown status
  • tst_qeventloop - unknown status
  • tst_qguieventloop - unknown status
  • tst_qhttpsocketengine - unknown status
  • tst_qimagereader - unknown status
  • tst_qiodevice - unknown status
  • tst_qlocalsocket - unknown status
  • tst_qobject - unknown status
  • tst_qsocketnotifier - unknown status
  • tst_qsocks5socketengine - unknown status
  • ...
78191
586bool QNativeSocketEngine::waitForRead(int msecs, bool *timedOut)-
587{-
588 const QNativeSocketEnginePrivate * const d = d_func();-
589 do { if (!isValid()) { QMessageLogger(__FILE__, 954962, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::waitForRead()"" was called on an uninitialized socket device"); return false; } } while (0);-
590 do { if (d->socketState == (QAbstractSocket::UnconnectedState)) { QMessageLogger(-
591 __FILE__-
592 ,-
593 956964-
594 , __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::waitForRead()"" was called in ""QAbstractSocket::UnconnectedState"); return (false); } } while (0)-
595 ;-
596-
597 if (timedOut)-
598 *timedOut = false;-
599-
600 int ret = d->nativeSelect(msecs, true);-
601 if (ret == 0) {-
602 if (timedOut)-
603 *timedOut = true;-
604 d->setError(QAbstractSocket::SocketTimeoutError,-
605 QNativeSocketEnginePrivate::TimeOutErrorString);-
606 d->hasSetSocketError = false;-
607 return false;-
608 } else if (state() == QAbstractSocket::ConnectingState) {-
609 connectToHost(d->peerAddress, d->peerPort);-
610 }-
611-
612 return ret > 0;-
613}-
614bool QNativeSocketEngine::waitForWrite(int msecs, bool *timedOut)-
615{-
616 QNativeSocketEnginePrivate * const d = d_func();-
617 do { if (!isValid()) { QMessageLogger(__FILE__, 9941002, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::waitForWrite()"" was called on an uninitialized socket device"); return false; } } while (0);-
618 do { if (d->socketState == (QAbstractSocket::UnconnectedState)) { QMessageLogger(-
619 __FILE__-
620 ,-
621 9961004-
622 , __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::waitForWrite()"" was called in ""QAbstractSocket::UnconnectedState"); return (false); } } while (0)-
623 ;-
624-
625 if (timedOut)-
626 *timedOut = false;-
627-
628 int ret = d->nativeSelect(msecs, false);-
629 if (ret == 0) {-
630 if (timedOut)-
631 *timedOut = true;-
632 d->setError(QAbstractSocket::SocketTimeoutError,-
633 QNativeSocketEnginePrivate::TimeOutErrorString);-
634 d->hasSetSocketError = false;-
635 return false;-
636 } else if (state() == QAbstractSocket::ConnectingState || (state() == QAbstractSocket::BoundState && d->socketDescriptor != -1)) {-
637 connectToHost(d->peerAddress, d->peerPort);-
638 }-
639-
640 return ret > 0;-
641}-
642-
643bool QNativeSocketEngine::waitForReadOrWrite(bool *readyToRead, bool *readyToWrite,-
644 bool checkRead, bool checkWrite,-
645 int msecs, bool *timedOut)-
646{-
647 QNativeSocketEnginePrivate * const d = d_func();-
648 do { if (!isValid()) { QMessageLogger(__FILE__, 10501058, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::waitForWrite()"" was called on an uninitialized socket device"); return false; } } while (0);-
649 do { if (d->socketState == (QAbstractSocket::UnconnectedState)) { QMessageLogger(-
650 __FILE__-
651 ,-
652 10521060-
653 , __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::waitForReadOrWrite()"" was called in ""QAbstractSocket::UnconnectedState"); return (false); } } while (0)-
654 ;-
655-
656 int ret = d->nativeSelect(msecs, checkRead, checkWrite, readyToRead, readyToWrite);-
657 if (ret == 0) {-
658 if (timedOut)-
659 *timedOut = true;-
660 d->setError(QAbstractSocket::SocketTimeoutError,-
661 QNativeSocketEnginePrivate::TimeOutErrorString);-
662 d->hasSetSocketError = false;-
663 return false;-
664 } else if (state() == QAbstractSocket::ConnectingState) {-
665 connectToHost(d->peerAddress, d->peerPort);-
666 }-
667-
668 return ret > 0;-
669}-
670-
671-
672-
673-
674-
675-
676-
677qint64 QNativeSocketEngine::receiveBufferSize() const-
678{-
679 do { if (!isValid()) { QMessageLogger(__FILE__, 11051113, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::receiveBufferSize()"" was called on an uninitialized socket device"); return -1; } } while (0);-
680 return option(ReceiveBufferSocketOption);-
681}-
682void QNativeSocketEngine::setReceiveBufferSize(qint64 size)-
683{-
684 do { if (!isValid()) { QMessageLogger(__FILE__, 11261134, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::setReceiveBufferSize()"" was called on an uninitialized socket device"); return ; } } while (0);-
685 setOption(ReceiveBufferSocketOption, size);-
686}-
687-
688-
689-
690-
691-
692-
693qint64 QNativeSocketEngine::sendBufferSize() const-
694{-
695 do { if (!isValid()) { QMessageLogger(__FILE__, 11371145, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::setSendBufferSize()"" was called on an uninitialized socket device"); return -1; } } while (0);-
696 return option(SendBufferSocketOption);-
697}-
698void QNativeSocketEngine::setSendBufferSize(qint64 size)-
699{-
700 do { if (!isValid()) { QMessageLogger(__FILE__, 11521160, __PRETTY_FUNCTION__).warning("""QNativeSocketEngine::setSendBufferSize()"" was called on an uninitialized socket device"); return ; } } while (0);-
701 setOption(SendBufferSocketOption, size);-
702}-
703-
704-
705-
706-
707-
708bool QNativeSocketEngine::setOption(SocketOption option, int value)-
709{-
710 QNativeSocketEnginePrivate * const d = d_func();-
711 return d->setOption(option, value);-
712}-
713-
714-
715-
716-
717int QNativeSocketEngine::option(SocketOption socketOption) const-
718{-
719 const QNativeSocketEnginePrivate * const d = d_func();-
720 return d->option(socketOption);-
721}-
722-
723bool QNativeSocketEngine::isReadNotificationEnabled() const-
724{-
725 const QNativeSocketEnginePrivate * const d = d_func();-
726 return d->readNotifier && d->readNotifier->isEnabled();-
727}-
728class QReadNotifier : public QSocketNotifier-
729{-
730public:-
731 QReadNotifier(qintptr fd, QNativeSocketEngine *parent)-
732 : QSocketNotifier(fd, QSocketNotifier::Read, parent)-
733 { engine = parent; }-
734-
735protected:-
736 bool event(QEvent *);-
737-
738 QNativeSocketEngine *engine;-
739};-
740-
741bool QReadNotifier::event(QEvent *e)-
742{-
743 if (e->type() == QEvent::SockAct) {-
744 engine->readNotification();-
745 return true;-
746 } else if (e->type() == QEvent::SockClose) {-
747 engine->closeNotification();-
748 return true;-
749 }-
750 return QSocketNotifier::event(e);-
751}-
752class QWriteNotifier : public QSocketNotifier-
753{-
754public:-
755 QWriteNotifier(int fd, QNativeSocketEngine *parent)-
756 : QSocketNotifier(fd, QSocketNotifier::Write, parent) { engine = parent; }-
757-
758protected:-
759 bool event(QEvent *);-
760-
761 QNativeSocketEngine *engine;-
762};-
763-
764bool QWriteNotifier::event(QEvent *e)-
765{-
766 if (e->type() == QEvent::SockAct) {-
767 if (engine->state() == QAbstractSocket::ConnectingState)-
768 engine->connectionNotification();-
769 else-
770 engine->writeNotification();-
771 return true;-
772 }-
773 return QSocketNotifier::event(e);-
774}-
775-
776class QExceptionNotifier : public QSocketNotifier-
777{-
778public:-
779 QExceptionNotifier(int fd, QNativeSocketEngine *parent)-
780 : QSocketNotifier(fd, QSocketNotifier::Exception, parent) { engine = parent; }-
781-
782protected:-
783 bool event(QEvent *);-
784-
785 QNativeSocketEngine *engine;-
786};-
787-
788bool QExceptionNotifier::event(QEvent *e)-
789{-
790 if (e->type() == QEvent::SockAct) {-
791 if (engine->state() == QAbstractSocket::ConnectingState)-
792 engine->connectionNotification();-
793 else-
794 engine->exceptionNotification();-
795 return true;-
796 }-
797 return QSocketNotifier::event(e);-
798}-
799-
800void QNativeSocketEngine::setReadNotificationEnabled(bool enable)-
801{-
802 QNativeSocketEnginePrivate * const d = d_func();-
803 if (d->readNotifier) {-
804 d->readNotifier->setEnabled(enable);-
805 } else if (enable && d->threadData->hasEventDispatcher()) {-
806 d->readNotifier = new QReadNotifier(d->socketDescriptor, this);-
807 d->readNotifier->setEnabled(true);-
808 }-
809}-
810-
811bool QNativeSocketEngine::isWriteNotificationEnabled() const-
812{-
813 const QNativeSocketEnginePrivate * const d = d_func();-
814 return d->writeNotifier && d->writeNotifier->isEnabled();-
815}-
816-
817void QNativeSocketEngine::setWriteNotificationEnabled(bool enable)-
818{-
819 QNativeSocketEnginePrivate * const d = d_func();-
820 if (d->writeNotifier) {-
821 d->writeNotifier->setEnabled(enable);-
822 } else if (enable && d->threadData->hasEventDispatcher()) {-
823 d->writeNotifier = new QWriteNotifier(d->socketDescriptor, this);-
824 d->writeNotifier->setEnabled(true);-
825 }-
826}-
827-
828bool QNativeSocketEngine::isExceptionNotificationEnabled() const-
829{-
830 const QNativeSocketEnginePrivate * const d = d_func();-
831 return d->exceptNotifier && d->exceptNotifier->isEnabled();-
832}-
833-
834void QNativeSocketEngine::setExceptionNotificationEnabled(bool enable)-
835{-
836 QNativeSocketEnginePrivate * const d = d_func();-
837 if (d->exceptNotifier) {-
838 d->exceptNotifier->setEnabled(enable);-
839 } else if (enable && d->threadData->hasEventDispatcher()) {-
840 d->exceptNotifier = new QExceptionNotifier(d->socketDescriptor, this);-
841 d->exceptNotifier->setEnabled(true);-
842 }-
843}-
844-
845-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9