add socket activation for extensions (#118)

Option `X-AW-Socket` is used. Any message received by this socket will
trigger extension update. If the option is set, `X-AW-Interval` will be
ignored
This commit is contained in:
2017-02-06 12:16:16 +03:00
parent 9543122816
commit bfdaadfc8b
19 changed files with 204 additions and 40 deletions

View File

@ -49,6 +49,8 @@ ExtNetworkRequest::ExtNetworkRequest(QWidget *parent, const QString filePath)
m_manager = new QNetworkAccessManager(nullptr);
connect(m_manager, SIGNAL(finished(QNetworkReply *)), this,
SLOT(networkReplyReceived(QNetworkReply *)));
connect(this, SIGNAL(socketActivated()), this, SLOT(sendRequest()));
}
@ -58,6 +60,7 @@ ExtNetworkRequest::~ExtNetworkRequest()
disconnect(m_manager, SIGNAL(finished(QNetworkReply *)), this,
SLOT(networkReplyReceived(QNetworkReply *)));
disconnect(this, SIGNAL(socketActivated()), this, SLOT(sendRequest()));
m_manager->deleteLater();
delete ui;
@ -116,15 +119,11 @@ void ExtNetworkRequest::readConfiguration()
QVariantHash ExtNetworkRequest::run()
{
if ((!isActive()) || (m_isRunning))
if (!canRun())
return m_values;
if (m_times == 1) {
qCInfo(LOG_LIB) << "Send request";
m_isRunning = true;
QNetworkReply *reply = m_manager->get(QNetworkRequest(m_url));
new QReplyTimeout(reply, REQUEST_TIMEOUT);
}
if (m_times == 1)
sendRequest();
// update value
if (m_times >= interval())
@ -193,6 +192,20 @@ void ExtNetworkRequest::networkReplyReceived(QNetworkReply *reply)
}
void ExtNetworkRequest::sendRequest()
{
m_isRunning = true;
QNetworkReply *reply = m_manager->get(QNetworkRequest(m_url));
new QReplyTimeout(reply, REQUEST_TIMEOUT);
}
bool ExtNetworkRequest::canRun() const
{
return ((isActive()) && (!m_isRunning) && (socket().isEmpty()));
}
void ExtNetworkRequest::initUrl()
{
m_url = QUrl(m_stringUrl);