QHttp
отправит набор сигналов для уведомления о состоянии запроса. Например, вы можете подключить сигнал requestFinished()
к слоту, который будет обрабатывать его и запустить второй запрос.
Идея в псевдо-QT
//possibly in constructor
connect(myHttp, SIGNAL(requestFinished(int, bool)),
this, SLOT(requestHandler(int, bool)))
//first call somewhere
firstReqId = myHttp->get("first.com", buff);
void requestHandler(int id, bool error)
{
if (error)
panic();
if(id == firstReqId) {
process(buff);
secondReqId = myHttp->get("second.com", buff2);
}
if (id == secondReqId) {
process(buff2);
sock.connectToHost("server.com", "5222"); //etc
}
}
Или в качестве другого решения вы можете разумно использовать структуры блокировки, такие как QMutex
, и обернуть QHttp, реализовав собственный метод запроса блокировки, который будет разрешать один запрос за раз. Но я думаю, что в вашем случае первый подход лучше.