Skip to content

Commit 5824faf

Browse files
committedJan 23, 2019
Add thread safe QgsNetworkAccessManager::requestTimedOut signal
1 parent 1190000 commit 5824faf

File tree

4 files changed

+41
-4
lines changed

4 files changed

+41
-4
lines changed
 

‎python/core/auto_generated/qgsnetworkaccessmanager.sip.in

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,8 @@ created in any thread.
173173

174174
.. seealso:: :py:func:`finished`
175175

176+
.. seealso:: :py:func:`requestTimedOut`
177+
176178
.. versionadded:: 3.6
177179
%End
178180

@@ -189,6 +191,23 @@ created in any thread.
189191

190192
.. seealso:: :py:func:`requestAboutToBeCreated`
191193

194+
.. seealso:: :py:func:`requestTimedOut`
195+
196+
.. versionadded:: 3.6
197+
%End
198+
199+
void requestTimedOut( QgsNetworkRequestParameters request );
200+
%Docstring
201+
Emitted when a network request has timed out.
202+
203+
This signal is propagated to the main thread QgsNetworkAccessManager instance, so it is necessary
204+
only to connect to the main thread's signal in order to receive notifications about requests
205+
created in any thread.
206+
207+
.. seealso:: :py:func:`requestAboutToBeCreated`
208+
209+
.. seealso:: :py:func:`finished`
210+
192211
.. versionadded:: 3.6
193212
%End
194213

‎src/core/qgsnetworkaccessmanager.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,8 @@ void QgsNetworkAccessManager::abortRequest()
243243
QgsDebugMsgLevel( QStringLiteral( "Abort [reply:%1] %2" ).arg( reinterpret_cast< qint64 >( reply ), 0, 16 ).arg( reply->url().toString() ), 3 );
244244
QgsMessageLog::logMessage( tr( "Network request %1 timed out" ).arg( reply->url().toString() ), tr( "Network" ) );
245245
// Notify the application
246+
emit requestTimedOut( QgsNetworkRequestParameters( reply->operation(), reply->request(), reply->property( "requestId" ).toInt() ) );
246247
emit requestTimedOut( reply );
247-
248248
}
249249

250250
void QgsNetworkAccessManager::onReplyFinished( QNetworkReply *reply )
@@ -308,8 +308,11 @@ void QgsNetworkAccessManager::setupDefaultProxyAndCache( Qt::ConnectionType conn
308308
sMainNAM, &QNetworkAccessManager::proxyAuthenticationRequired,
309309
connectionType );
310310

311-
connect( this, &QgsNetworkAccessManager::requestTimedOut,
312-
sMainNAM, &QgsNetworkAccessManager::requestTimedOut );
311+
connect( this, qgis::overload< QNetworkReply *>::of( &QgsNetworkAccessManager::requestTimedOut ),
312+
sMainNAM, qgis::overload< QNetworkReply *>::of( &QgsNetworkAccessManager::requestTimedOut ) );
313+
314+
connect( this, qgis::overload< QgsNetworkRequestParameters >::of( &QgsNetworkAccessManager::requestTimedOut ),
315+
sMainNAM, qgis::overload< QgsNetworkRequestParameters >::of( &QgsNetworkAccessManager::requestTimedOut ) );
313316

314317
connect( this, qgis::overload< QgsNetworkRequestParameters >::of( &QgsNetworkAccessManager::requestAboutToBeCreated ),
315318
sMainNAM, qgis::overload< QgsNetworkRequestParameters >::of( &QgsNetworkAccessManager::requestAboutToBeCreated ) );

‎src/core/qgsnetworkaccessmanager.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ class CORE_EXPORT QgsNetworkAccessManager : public QNetworkAccessManager
174174
* created in any thread.
175175
*
176176
* \see finished( QgsNetworkReplyContent )
177+
* \see requestTimedOut( QgsNetworkRequestParameters )
177178
* \since QGIS 3.6
178179
*/
179180
void requestAboutToBeCreated( QgsNetworkRequestParameters request );
@@ -189,10 +190,24 @@ class CORE_EXPORT QgsNetworkAccessManager : public QNetworkAccessManager
189190
* created in any thread.
190191
*
191192
* \see requestAboutToBeCreated( QgsNetworkRequestParameters )
193+
* \see requestTimedOut( QgsNetworkRequestParameters )
192194
* \since QGIS 3.6
193195
*/
194196
void finished( QgsNetworkReplyContent reply );
195197

198+
/**
199+
* Emitted when a network request has timed out.
200+
*
201+
* This signal is propagated to the main thread QgsNetworkAccessManager instance, so it is necessary
202+
* only to connect to the main thread's signal in order to receive notifications about requests
203+
* created in any thread.
204+
*
205+
* \see requestAboutToBeCreated( QgsNetworkRequestParameters )
206+
* \see finished( QgsNetworkReplyContent )
207+
* \since QGIS 3.6
208+
*/
209+
void requestTimedOut( QgsNetworkRequestParameters request );
210+
196211
void requestCreated( QNetworkReply * );
197212
void requestTimedOut( QNetworkReply * );
198213

‎src/providers/wfs/qgswfsrequest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ QgsWfsRequest::QgsWfsRequest( const QgsWFSDataSourceURI &uri )
3838
, mGotNonEmptyResponse( false )
3939
{
4040
QgsDebugMsgLevel( QStringLiteral( "theUri = " ) + uri.uri( ), 4 );
41-
connect( QgsNetworkAccessManager::instance(), &QgsNetworkAccessManager::requestTimedOut, this, &QgsWfsRequest::requestTimedOut );
41+
connect( QgsNetworkAccessManager::instance(), qgis::overload< QNetworkReply *>::of( &QgsNetworkAccessManager::requestTimedOut ), this, &QgsWfsRequest::requestTimedOut );
4242
}
4343

4444
QgsWfsRequest::~QgsWfsRequest()

0 commit comments

Comments
 (0)
Please sign in to comment.