QTimer singleShot resolution



  • I am building a networked event controled application. The events are very simple:

    Client sents a request to a server;
    Server gets the request and sends a response back to the client.

    It works well, but probably not perfect. The problem is I want to use QTimer single shot events to know if I don't get a response back within a specific time, it is pretty big, so the client knows when it should go into the devcon 3 state :).

    In the class constructor I have:
    @
    cmdTimer = new QTimer();
    cmdTimer->setSingleShot(true);
    connect(cmdTimer, SIGNAL(timeout()), this, SLOT(timeout()));
    connect(this, SIGNAL(stopTimer(int)), cmdTimer, SLOT(stop()));
    @

    I start the singleShot timer as follows:
    @
    // just before the request
    cmdTimer->singleShot(100, this, SLOT(timeout()));
    sendRequest();
    @

    I stop the timer if the event comes in as follows:
    @
    emit stopTimer();
    @

    If the response comes back before the timeout is fired all is good, the timer is stoped and I never get the timeout. I am trying to ensure it works correctly so I have the server sleep for a period twice as long as the singleshot request and I expect to get a timeout with each request.

    I get the first couple of timeouts correctly, but after a few they stop for 4 commands and after the 4th command I get the 4 outstanding timeouts. Also, could this be because I am still debugging the app on a single machine?


Log in to reply
 

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