Merge pull request #54 from droidsyer/fixedTimeout
Added Fixed timeout and Git version.
This commit is contained in:
commit
21c03b2bab
|
|
@ -19,6 +19,7 @@ QAmqpClientPrivate::QAmqpClientPrivate(QAmqpClient *q)
|
||||||
host(AMQP_HOST),
|
host(AMQP_HOST),
|
||||||
virtualHost(AMQP_VHOST),
|
virtualHost(AMQP_VHOST),
|
||||||
autoReconnect(false),
|
autoReconnect(false),
|
||||||
|
reconnectFixedTimeout(false),
|
||||||
timeout(0),
|
timeout(0),
|
||||||
connecting(false),
|
connecting(false),
|
||||||
useSsl(false),
|
useSsl(false),
|
||||||
|
|
@ -161,7 +162,10 @@ void QAmqpClientPrivate::_q_disconnect()
|
||||||
// private slots
|
// private slots
|
||||||
void QAmqpClientPrivate::_q_socketConnected()
|
void QAmqpClientPrivate::_q_socketConnected()
|
||||||
{
|
{
|
||||||
|
if(reconnectFixedTimeout == false)
|
||||||
|
{
|
||||||
timeout = 0;
|
timeout = 0;
|
||||||
|
}
|
||||||
char header[8] = {'A', 'M', 'Q', 'P', 0, 0, 9, 1};
|
char header[8] = {'A', 'M', 'Q', 'P', 0, 0, 9, 1};
|
||||||
socket->write(header, 8);
|
socket->write(header, 8);
|
||||||
}
|
}
|
||||||
|
|
@ -185,12 +189,15 @@ void QAmqpClientPrivate::_q_heartbeat()
|
||||||
void QAmqpClientPrivate::_q_socketError(QAbstractSocket::SocketError error)
|
void QAmqpClientPrivate::_q_socketError(QAbstractSocket::SocketError error)
|
||||||
{
|
{
|
||||||
Q_Q(QAmqpClient);
|
Q_Q(QAmqpClient);
|
||||||
|
if(reconnectFixedTimeout == false)
|
||||||
|
{
|
||||||
if (timeout <= 0) {
|
if (timeout <= 0) {
|
||||||
timeout = 1000;
|
timeout = 1000;
|
||||||
} else {
|
} else {
|
||||||
if (timeout < 120000)
|
if (timeout < 120000)
|
||||||
timeout *= 5;
|
timeout *= 5;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (error) {
|
switch (error) {
|
||||||
case QAbstractSocket::ConnectionRefusedError:
|
case QAbstractSocket::ConnectionRefusedError:
|
||||||
|
|
@ -747,10 +754,21 @@ bool QAmqpClient::autoReconnect() const
|
||||||
return d->autoReconnect;
|
return d->autoReconnect;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QAmqpClient::setAutoReconnect(bool value)
|
void QAmqpClient::setAutoReconnect(bool value, int timeout)
|
||||||
{
|
{
|
||||||
Q_D(QAmqpClient);
|
Q_D(QAmqpClient);
|
||||||
d->autoReconnect = value;
|
d->autoReconnect = value;
|
||||||
|
|
||||||
|
if((value == true) && (timeout > 0))
|
||||||
|
{
|
||||||
|
d->timeout = timeout;
|
||||||
|
d->reconnectFixedTimeout = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
d->timeout = 0;
|
||||||
|
d->reconnectFixedTimeout = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qint16 QAmqpClient::channelMax() const
|
qint16 QAmqpClient::channelMax() const
|
||||||
|
|
@ -866,6 +884,11 @@ void QAmqpClient::setSslConfiguration(const QSslConfiguration &config)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString QAmqpClient::gitVersion()
|
||||||
|
{
|
||||||
|
return QString(GIT_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
void QAmqpClient::ignoreSslErrors(const QList<QSslError> &errors)
|
void QAmqpClient::ignoreSslErrors(const QList<QSslError> &errors)
|
||||||
{
|
{
|
||||||
Q_D(QAmqpClient);
|
Q_D(QAmqpClient);
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ public:
|
||||||
QAmqpAuthenticator *auth() const;
|
QAmqpAuthenticator *auth() const;
|
||||||
|
|
||||||
bool autoReconnect() const;
|
bool autoReconnect() const;
|
||||||
void setAutoReconnect(bool value);
|
void setAutoReconnect(bool value, int timeout = 0);
|
||||||
|
|
||||||
bool isConnected() const;
|
bool isConnected() const;
|
||||||
|
|
||||||
|
|
@ -95,6 +95,8 @@ public:
|
||||||
QSslConfiguration sslConfiguration() const;
|
QSslConfiguration sslConfiguration() const;
|
||||||
void setSslConfiguration(const QSslConfiguration &config);
|
void setSslConfiguration(const QSslConfiguration &config);
|
||||||
|
|
||||||
|
static QString gitVersion();
|
||||||
|
|
||||||
// channels
|
// channels
|
||||||
QAmqpExchange *createExchange(int channelNumber = -1);
|
QAmqpExchange *createExchange(int channelNumber = -1);
|
||||||
QAmqpExchange *createExchange(const QString &name, int channelNumber = -1);
|
QAmqpExchange *createExchange(const QString &name, int channelNumber = -1);
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,7 @@ public:
|
||||||
// Network
|
// Network
|
||||||
QByteArray buffer;
|
QByteArray buffer;
|
||||||
bool autoReconnect;
|
bool autoReconnect;
|
||||||
|
bool reconnectFixedTimeout;
|
||||||
int timeout;
|
int timeout;
|
||||||
bool connecting;
|
bool connecting;
|
||||||
bool useSsl;
|
bool useSsl;
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,13 @@ greaterThan(NEED_GCOV_SUPPORT, 0) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#Define GIT Macros
|
||||||
|
GIT_VERSION = $$system(git describe --long --dirty --tags)
|
||||||
|
DEFINES += GIT_VERSION=\\\"$$GIT_VERSION\\\"
|
||||||
|
|
||||||
|
GIT_TAG = $$system(git describe --abbrev=0)
|
||||||
|
VERSION = $$replace(GIT_TAG, v,)
|
||||||
|
|
||||||
PRIVATE_HEADERS += \
|
PRIVATE_HEADERS += \
|
||||||
qamqpchannel_p.h \
|
qamqpchannel_p.h \
|
||||||
qamqpchannelhash_p.h \
|
qamqpchannelhash_p.h \
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ private Q_SLOTS:
|
||||||
|
|
||||||
public Q_SLOTS: // temporarily disabled
|
public Q_SLOTS: // temporarily disabled
|
||||||
void autoReconnect();
|
void autoReconnect();
|
||||||
|
void autoReconnectTimeout();
|
||||||
void sslConnect();
|
void sslConnect();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
@ -147,6 +148,28 @@ void tst_QAMQPClient::autoReconnect()
|
||||||
QVERIFY(waitForSignal(&client, SIGNAL(connected()), 2));
|
QVERIFY(waitForSignal(&client, SIGNAL(connected()), 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_QAMQPClient::autoReconnectTimeout()
|
||||||
|
{
|
||||||
|
// TODO: this is a fairly crude way of testing this, research
|
||||||
|
// better alternatives
|
||||||
|
|
||||||
|
QAmqpClient client;
|
||||||
|
client.setAutoReconnect(true, 3);
|
||||||
|
client.connectToHost();
|
||||||
|
QVERIFY(waitForSignal(&client, SIGNAL(connected()), 60));
|
||||||
|
qDebug() <<"connected" ;
|
||||||
|
QProcess::execute("rabbitmqctl", QStringList() << "stop_app");
|
||||||
|
QVERIFY(waitForSignal(&client, SIGNAL(disconnected()), 60));
|
||||||
|
qDebug() <<"disconnected" ;
|
||||||
|
QProcess::execute("rabbitmqctl", QStringList() << "start_app");
|
||||||
|
QVERIFY(waitForSignal(&client, SIGNAL(connected()), 60));
|
||||||
|
qDebug() <<"connected" ;
|
||||||
|
|
||||||
|
QVERIFY(waitForSignal(&client, SIGNAL(disconnected()), 60));
|
||||||
|
QProcess::execute("rabbitmqctl", QStringList() << "start_app");
|
||||||
|
QVERIFY(waitForSignal(&client, SIGNAL(connected()), 60));
|
||||||
|
}
|
||||||
|
|
||||||
void tst_QAMQPClient::tune()
|
void tst_QAMQPClient::tune()
|
||||||
{
|
{
|
||||||
QAmqpClient client;
|
QAmqpClient client;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue