QNetworkAccessManager asynchronous API



  • As Qt document says:

    @
    QNetworkAccessManager manager = new QNetworkAccessManager(this);
    connect(manager, SIGNAL(finished(QNetworkReply
    )),
    this, SLOT(replyFinished(QNetworkReply*)));

    manager->get(QNetworkRequest(QUrl("http://qt.nokia.com")));
    @

    bq. QNetworkAccessManager has an asynchronous API. When the replyFinished slot above is called, the parameter it takes is the QNetworkReply object containing the downloaded data as well as meta-data (headers, etc.).

    I'm a little curious about the implementation of this asynchronous API.
    Of course, Qt source code will give me the answer, but it's more convenience to get some basic explanation here :)



  • What do you mean exactly? QNAM is built on top of QTcpSocket, which in turn has its async API (readyRead(), disconnected(), error(), etc. signals). So it's something like

    QTcpSocket emits a signal -> some slot we don't know -> (read and process the data) -> emit QNetworkReply / QNetworkAccessManager signals.

    The QTcpSocket async is built on top of an ordinary select(2). I briefly talked about this in this wiki page: http://developer.qt.nokia.com/wiki/Threads_Events_QObjects .



  • You answer is pretty clear, thanks.

    So, it's based on select(2) sys call.
    I just want to make sure. The link is very informative.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.