qnetworkaccessbackend.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/network/access/qnetworkaccessbackend.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9class QNetworkAccessBackendFactoryData: public QList<QNetworkAccessBackendFactory *>-
10{-
11public:-
12 QNetworkAccessBackendFactoryData() : mutex(QMutex::Recursive)-
13 {-
14 valid.ref();-
15 }-
16 ~QNetworkAccessBackendFactoryData()-
17 {-
18 QMutexLocker locker(&mutex);-
19 valid.deref();-
20 }-
21-
22 QMutex mutex;-
23-
24 static QBasicAtomicInt valid;-
25};-
26namespace { namespace Q_QGS_factoryData { typedef QNetworkAccessBackendFactoryData Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized) guard.store(QtGlobalStatic::Destroyed); } }; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type ())) : value () { guard.store(QtGlobalStatic::Initialized); } } holder; return &holder.value; } } } static QGlobalStatic<QNetworkAccessBackendFactoryData, Q_QGS_factoryData::innerFunction, Q_QGS_factoryData::guard> factoryData;-
27QBasicAtomicInt QNetworkAccessBackendFactoryData::valid = { 0 };-
28-
29QNetworkAccessBackendFactory::QNetworkAccessBackendFactory()-
30{-
31 QMutexLocker locker(&factoryData()->mutex);-
32 factoryData()->append(this);-
33}-
34-
35QNetworkAccessBackendFactory::~QNetworkAccessBackendFactory()-
36{-
37 if (QNetworkAccessBackendFactoryData::valid.load()) {-
38 QMutexLocker locker(&factoryData()->mutex);-
39 factoryData()->removeAll(this);-
40 }-
41}-
42-
43QNetworkAccessBackend *QNetworkAccessManagerPrivate::findBackend(QNetworkAccessManager::Operation op,-
44 const QNetworkRequest &request)-
45{-
46 if (QNetworkAccessBackendFactoryData::valid.load()) {-
47 QMutexLocker locker(&factoryData()->mutex);-
48 QNetworkAccessBackendFactoryData::ConstIterator it = factoryData()->constBegin(),-
49 end = factoryData()->constEnd();-
50 while (it != end) {-
51 QNetworkAccessBackend *backend = (*it)->create(op, request);-
52 if (backend) {-
53 backend->manager = this;-
54 return backend;-
55 }-
56 ++it;-
57 }-
58 }-
59 return 0;-
60}-
61-
62QStringList QNetworkAccessManagerPrivate::backendSupportedSchemes() const-
63{-
64 if (QNetworkAccessBackendFactoryData::valid.load()) {-
65 QMutexLocker locker(&factoryData()->mutex);-
66 QNetworkAccessBackendFactoryData::ConstIterator it = factoryData()->constBegin();-
67 QNetworkAccessBackendFactoryData::ConstIterator end = factoryData()->constEnd();-
68 QStringList schemes;-
69 while (it != end) {-
70 schemes += (*it)->supportedSchemes();-
71 ++it;-
72 }-
73 return schemes;-
74 }-
75 return QStringList();-
76}-
77-
78QNonContiguousByteDevice* QNetworkAccessBackend::createUploadByteDevice()-
79{-
80 if (reply->outgoingDataBuffer)-
81 uploadByteDevice = QNonContiguousByteDeviceFactory::createShared(reply->outgoingDataBuffer);-
82 else if (reply->outgoingData) {-
83 uploadByteDevice = QNonContiguousByteDeviceFactory::createShared(reply->outgoingData);-
84 } else {-
85 return 0;-
86 }-
87-
88-
89 if (!isSynchronous())-
90 connect(uploadByteDevice.data(), qFlagLocation("2""readProgress(qint64,qint64)" "\0" __FILE__ ":" "133""139"), this, qFlagLocation("1""emitReplyUploadProgress(qint64,qint64)" "\0" __FILE__ ":" "133""139"));-
91-
92 return uploadByteDevice.data();-
93}-
94-
95-
96-
97void QNetworkAccessBackend::emitReplyUploadProgress(qint64 bytesSent, qint64 bytesTotal)-
98{-
99 if (reply->isFinished)-
100 return;-
101 reply->emitUploadProgress(bytesSent, bytesTotal);-
102}-
103-
104QNetworkAccessBackend::QNetworkAccessBackend()-
105 : manager(0)-
106 , reply(0)-
107 , synchronous(false)-
108{-
109}-
110-
111QNetworkAccessBackend::~QNetworkAccessBackend()-
112{-
113}-
114-
115void QNetworkAccessBackend::downstreamReadyWrite()-
116{-
117-
118}-
119-
120void QNetworkAccessBackend::setDownstreamLimited(bool b)-
121{-
122 (void)b;;-
123-
124}-
125-
126void QNetworkAccessBackend::copyFinished(QIODevice *)-
127{-
128-
129}-
130-
131void QNetworkAccessBackend::ignoreSslErrors()-
132{-
133-
134}-
135-
136void QNetworkAccessBackend::ignoreSslErrors(const QList<QSslError> &errors)-
137{-
138 (void)errors;;-
139-
140}-
141-
142void QNetworkAccessBackend::fetchSslConfiguration(QSslConfiguration &) const-
143{-
144-
145}-
146-
147void QNetworkAccessBackend::setSslConfiguration(const QSslConfiguration &)-
148{-
149-
150}-
151-
152QNetworkCacheMetaData QNetworkAccessBackend::fetchCacheMetaData(const QNetworkCacheMetaData &) const-
153{-
154 return QNetworkCacheMetaData();-
155}-
156-
157QNetworkAccessManager::Operation QNetworkAccessBackend::operation() const-
158{-
159 return reply->operation;-
160}-
161-
162QNetworkRequest QNetworkAccessBackend::request() const-
163{-
164 return reply->request;-
165}-
166-
167-
168QList<QNetworkProxy> QNetworkAccessBackend::proxyList() const-
169{-
170 return reply->proxyList;-
171}-
172-
173-
174QAbstractNetworkCache *QNetworkAccessBackend::networkCache() const-
175{-
176 if (!manager)-
177 return 0;-
178 return manager->networkCache;-
179}-
180-
181void QNetworkAccessBackend::setCachingEnabled(bool enable)-
182{-
183 reply->setCachingEnabled(enable);-
184}-
185-
186bool QNetworkAccessBackend::isCachingEnabled() const-
187{-
188 return reply->isCachingEnabled();-
189}-
190-
191qint64 QNetworkAccessBackend::nextDownstreamBlockSize() const-
192{-
193 return reply->nextDownstreamBlockSize();-
194}-
195-
196void QNetworkAccessBackend::writeDownstreamData(QByteDataBuffer &list)-
197{-
198 reply->appendDownstreamData(list);-
199}-
200-
201void QNetworkAccessBackend::writeDownstreamData(QIODevice *data)-
202{-
203 reply->appendDownstreamData(data);-
204}-
205-
206-
207void QNetworkAccessBackend::writeDownstreamDataDownloadBuffer(qint64 bytesReceived, qint64 bytesTotal)-
208{-
209 reply->appendDownstreamDataDownloadBuffer(bytesReceived, bytesTotal);-
210}-
211-
212char* QNetworkAccessBackend::getDownloadBuffer(qint64 size)-
213{-
214 return reply->getDownloadBuffer(size);-
215}-
216-
217QVariant QNetworkAccessBackend::header(QNetworkRequest::KnownHeaders header) const-
218{-
219 return reply->q_func()->header(header);-
220}-
221-
222void QNetworkAccessBackend::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)-
223{-
224 reply->setCookedHeader(header, value);-
225}-
226-
227bool QNetworkAccessBackend::hasRawHeader(const QByteArray &headerName) const-
228{-
229 return reply->q_func()->hasRawHeader(headerName);-
230}-
231-
232QByteArray QNetworkAccessBackend::rawHeader(const QByteArray &headerName) const-
233{-
234 return reply->q_func()->rawHeader(headerName);-
235}-
236-
237QList<QByteArray> QNetworkAccessBackend::rawHeaderList() const-
238{-
239 return reply->q_func()->rawHeaderList();-
240}-
241-
242void QNetworkAccessBackend::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)-
243{-
244 reply->setRawHeader(headerName, headerValue);-
245}-
246-
247QVariant QNetworkAccessBackend::attribute(QNetworkRequest::Attribute code) const-
248{-
249 return reply->q_func()->attribute(code);-
250}-
251-
252void QNetworkAccessBackend::setAttribute(QNetworkRequest::Attribute code, const QVariant &value)-
253{-
254 if (value.isValid())-
255 reply->attributes.insert(code, value);-
256 else-
257 reply->attributes.remove(code);-
258}-
259QUrl QNetworkAccessBackend::url() const-
260{-
261 return reply->url;-
262}-
263-
264void QNetworkAccessBackend::setUrl(const QUrl &url)-
265{-
266 reply->url = url;-
267}-
268-
269void QNetworkAccessBackend::finished()-
270{-
271 reply->finished();-
272}-
273-
274void QNetworkAccessBackend::error(QNetworkReply::NetworkError code, const QString &errorString)-
275{-
276 reply->error(code, errorString);-
277}-
278-
279-
280void QNetworkAccessBackend::proxyAuthenticationRequired(const QNetworkProxy &proxy,-
281 QAuthenticator *authenticator)-
282{-
283 manager->proxyAuthenticationRequired(QUrl(), proxy, synchronous, authenticator, &reply->lastProxyAuthentication);-
284}-
285-
286-
287void QNetworkAccessBackend::authenticationRequired(QAuthenticator *authenticator)-
288{-
289 manager->authenticationRequired(authenticator, reply->q_func(), synchronous, reply->url, &reply->urlForLastAuthentication);-
290}-
291-
292void QNetworkAccessBackend::metaDataChanged()-
293{-
294 reply->metaDataChanged();-
295}-
296-
297void QNetworkAccessBackend::redirectionRequested(const QUrl &target)-
298{-
299 reply->redirectionRequested(target);-
300}-
301-
302void QNetworkAccessBackend::encrypted()-
303{-
304-
305 reply->encrypted();-
306-
307}-
308-
309void QNetworkAccessBackend::sslErrors(const QList<QSslError> &errors)-
310{-
311-
312 reply->sslErrors(errors);-
313-
314-
315-
316}-
317-
318-
319-
320-
321-
322-
323bool QNetworkAccessBackend::start()-
324{-
325-
326-
327 QSharedPointer<QNetworkSession> networkSession(manager->getNetworkSession());-
328 if (networkSession
networkSessionDescription
TRUEevaluated 119 times by 2 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
FALSEnever evaluated
) {
0-119
329-
330 if (networkSession->isOpen()
networkSession->isOpen()Description
TRUEevaluated 116 times by 2 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
FALSEevaluated 3 times by 1 test
Evaluated by:
  • tst_QNetworkReply
&&
3-116
331 networkSession->state() == QNetworkSession::Connected
networkSession...ion::ConnectedDescription
TRUEevaluated 116 times by 2 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
FALSEnever evaluated
) {
0-116
332-
333-
334 setProperty("_q_networksession", QVariant::fromValue(networkSession));-
335 }
executed 116 times by 2 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
else {
116
336-
337-
338-
339-
340 if (!reply->url.isLocalFile()
!reply->url.isLocalFile()Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEnever evaluated
)
{
0-3
341 const QString host = reply->url.host();-
342 if (host ==!= QLatin1String("localhost")
host != QLatin...g("localhost")Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEnever evaluated
||&& !
!QHostAddress(...).isLoopback()Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEnever evaluated
QHostAddress(host).isLoopback() ||
!QHostAddress(...).isLoopback()Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEnever evaluated
0-3
reply->url.isLocalFile
!QHostAddress(...).isLoopback()Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEnever evaluated
!QHostAddress(...).isLoopback()Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEnever evaluated
()
!QHostAddress(...).isLoopback()Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEnever evaluated
)
343 {3
} else {return
executed 3 times by 1 test: return false;
Executed by:
  • tst_QNetworkReply
false;
executed 3 times by 1 test: return false;
Executed by:
  • tst_QNetworkReply
344 }
never executed: end of block
0
345 }
never executed: end of block
0
346 }-
347-
348-
349-
350-
351-
352-
353 QNetworkSession *session = networkSession.data();-
354 QNetworkConfiguration config;-
355 if (session
sessionDescription
TRUEevaluated 116 times by 2 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
FALSEnever evaluated
) {
0-116
356 QNetworkConfigurationManager configManager;-
357-
358 QVariant v = session->sessionProperty(QLatin1String("ActiveConfiguration"));-
359 if (v.isValid()
v.isValid()Description
TRUEevaluated 116 times by 2 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
FALSEnever evaluated
)
0-116
360 config = configManager.configurationFromIdentifier(qvariant_cast<QString>(v));
executed 116 times by 2 tests: config = configManager.configurationFromIdentifier(qvariant_cast<QString>(v));
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
116
361-
362 if (!config.isValid()
!config.isValid()Description
TRUEnever evaluated
FALSEevaluated 116 times by 2 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
)
0-116
363 config = session->configuration();
never executed: config = session->configuration();
0
364-
365 if (!config.isValid()
!config.isValid()Description
TRUEnever evaluated
FALSEevaluated 116 times by 2 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
)
0-116
366 config = QNetworkConfiguration();
never executed: config = QNetworkConfiguration();
0
367 }
executed 116 times by 2 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
116
368 reply->proxyList = manager->queryProxy(QNetworkProxyQuery(config, url()));-
369-
370-
371-
372-
373-
374-
375-
376 open();-
377 return
executed 116 times by 2 tests: return true;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
true;
executed 116 times by 2 tests: return true;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
116
378}-
379-
380-
Switch to Source codePreprocessed file

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