void SIMSockets::resultsReady() { list<SIMResolver*>::iterator it; for (it = resolvers.begin(); it != resolvers.end();){ SIMResolver *r = *it; if (!r->bDone){ ++it; continue; } bool isActive; if (r->bTimeout){ isActive = false; }else{ isActive = true; } if (r->addr() == INADDR_NONE) isActive = false; #ifdef WIN32 bool bState; if (get_connection_state(bState)) isActive = bState; #endif setActive(isActive); emit resolveReady(r->addr(), r->host().c_str()); resolvers.remove(r); delete r; it = resolvers.begin(); } }
SIMResolver::SIMResolver(QObject *parent, const char *host) : QObject(parent) { bDone = false; bTimeout = false; timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(resolveTimeout())); timer->start(20000); dns = new QDns(host, QDns::A); connect(dns, SIGNAL(resultsReady()), this, SLOT(resolveReady())); }
SIMResolver::SIMResolver(QObject *parent, const char *host) : QObject(parent) { bDone = false; bTimeout = false; #ifdef WIN32 bool bState; if (get_connection_state(bState) && !bState){ QTimer::singleShot(0, this, SLOT(resolveTimeout())); return; } #endif timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(resolveTimeout())); timer->start(20000); dns = new QDns(host, QDns::A); connect(dns, SIGNAL(resultsReady()), this, SLOT(resolveReady())); }
void SIMClientSocket::connect(const char *_host, unsigned short _port) { port = _port; host = _host; #ifdef WIN32 bool bState; if (get_connection_state(bState) && !bState){ QTimer::singleShot(0, this, SLOT(slotConnectionClosed())); return; } #endif log(L_DEBUG, "Connect to %s:%u", host.c_str(), port); if (inet_addr(host.c_str()) == INADDR_NONE){ if (!host.empty() && (host[host.length() - 1] != '.')) host += "."; log(L_DEBUG, "Start resolve %s", host.c_str()); SIMSockets *s = static_cast<SIMSockets*>(getSocketFactory()); QObject::connect(s, SIGNAL(resolveReady(unsigned long, const char*)), this, SLOT(resolveReady(unsigned long, const char*))); s->resolve(host.c_str()); return; } resolveReady(inet_addr(host.c_str()), host.c_str()); }