bool ServerPool::bind(QList<QHostAddress> addrs, quint16 port, bool requireall) { m_port = port; QList<QHostAddress>::const_iterator it; for (it = addrs.begin(); it != addrs.end(); ++it) { QUdpSocket *socket = new QUdpSocket(this); connect(socket, SIGNAL(readyRead()), this, SLOT(newUdpDatagram())); if (socket->bind(*it, port)) { LOG(VB_GENERAL, LOG_INFO, QString("Binding to UDP %1:%2") .arg(PRETTYIP(it)).arg(port)); m_udpSockets.append(socket); } else if (requireall) { LOG(VB_GENERAL, LOG_ERR, QString("Failed binding to UDP %1:%2") .arg(PRETTYIP(it)).arg(port)); close(); socket->disconnect(); socket->deleteLater(); return false; } else { LOG(VB_GENERAL, LOG_WARNING, QString("Failed binding to UDP %1:%2") .arg(PRETTYIP(it)).arg(port)); socket->disconnect(); socket->deleteLater(); } } if (m_udpSockets.size() == 0) return false; m_listening = true; return true; }
void ServerPool::close(void) { QTcpServer *server; while (!m_tcpServers.isEmpty()) { server = m_tcpServers.takeLast(); server->disconnect(); server->close(); delete server; } QUdpSocket *socket; while (!m_udpSockets.isEmpty()) { socket = m_udpSockets.takeLast(); socket->disconnect(); socket->close(); delete socket; } }
void ServerPool::close(void) { QTcpServer *server; while (!m_tcpServers.isEmpty()) { server = m_tcpServers.takeLast(); server->disconnect(); server->close(); server->deleteLater(); } QUdpSocket *socket; while (!m_udpSockets.isEmpty()) { socket = m_udpSockets.takeLast(); socket->disconnect(); socket->close(); socket->deleteLater(); } m_listening = false; }