[Development] QtNetwork changes from QtDD SF 2011

Jeff Mitchell qt at jefferai.org
Mon Dec 5 20:50:23 CET 2011


Hello,

I was asked to put this information on the wiki, but wasn't actually
sure where the correct place was to do it. I'll put the info here and it
can be moved into the wiki later.

At the Contributor Day in San Francisco, a number of people met to
discuss some of the issues involving QtNetwork, espcially
QNetworkAccessManager (QNAM). The overall idea is that eventually
QNetworkAccessManager, which is meant to generally be
one-per-application, must be made thread-safe in order to fulfill this
desired use.

Here are the notes from the discussion:

Long term: QNAM needs to be thread-safe (and each QNAM will be in its
own thread)
* As a result so does the cookie jar and disk cache (and these would not
moveToThread())
* After that, implement QNAM::setApplicationNetworkAccessManager()
* QML can stop using multiple QNAMs and QNetworkProxyFactories (QNPFs) too.

Disk cache:
* Get implementation from somewhere which is good enough for most
applications
* Set caching on by default: no

Cookie jar:
* Get Alexi to redesign the API
* Need a default persistent cookie jar: possibly?
* Talk to WebKit guys, see if we can make an addon based on their cookie jar

Application proxy:
* Use system proxy by default

System proxy config:
* Global proxy config needs to be in network manager/connection manager
so there is a known place to fetch it before system proxies can be
supported on non-Windows/MacOS

QNetworkProxyFactory:
* queryProxy() needs to be documented that it must be thread-safe
* proxyForQuery(): unlock mutex before calling user code

QSharedPointer:
* Use for all three (disk cache, cookie jar, qnam) so that the user can
keep a ref around if they want (also for the static methods)
* Make QSharedPointer be able to delete properly with a forward declaration
* QObject::connect needs to be able to take a QSharedPointer<QObject>
* QObject::connect needs to be able to take a QWeakPointer<QObject>

Ultra long term (Qt6): Fix QIODevice to do zero-copy



More information about the Development mailing list