Forward socket errors to user

Provide accessors and a signal for socket errors, so that the user
can react accordingly. This closes issue #6
This commit is contained in:
Matt Broadstone 2014-09-16 11:54:20 -04:00
parent 7242a64a2f
commit 98f40f5589
3 changed files with 20 additions and 2 deletions

View File

@ -56,6 +56,8 @@ void QAmqpClientPrivate::initSocket()
QObject::connect(socket, SIGNAL(readyRead()), q, SLOT(_q_readyRead()));
QObject::connect(socket, SIGNAL(error(QAbstractSocket::SocketError)),
q, SLOT(_q_socketError(QAbstractSocket::SocketError)));
QObject::connect(socket, SIGNAL(error(QAbstractSocket::SocketError)),
q, SIGNAL(socketError(QAbstractSocket::SocketError)));
}
void QAmqpClientPrivate::setUsername(const QString &username)
@ -172,7 +174,7 @@ void QAmqpClientPrivate::_q_socketError(QAbstractSocket::SocketError error)
case QAbstractSocket::ProxyConnectionTimeoutError:
default:
qAmqpDebug() << "socket Error: " << socket->errorString();
qAmqpDebug() << "socket error: " << socket->errorString();
break;
}
@ -756,6 +758,12 @@ QString QAmqpClient::customProperty(const QString &name) const
return d->customProperties.value(name).toString();
}
QAbstractSocket::SocketError QAmqpClient::socketError() const
{
Q_D(const QAmqpClient);
return d->socket->error();
}
QAMQP::Error QAmqpClient::error() const
{
Q_D(const QAmqpClient);

View File

@ -69,6 +69,7 @@ public:
void addCustomProperty(const QString &name, const QString &value);
QString customProperty(const QString &name) const;
QAbstractSocket::SocketError socketError() const;
QAMQP::Error error() const;
QString errorString() const;
@ -88,6 +89,7 @@ Q_SIGNALS:
void connected();
void disconnected();
void error(QAMQP::Error error);
void socketError(QAbstractSocket::SocketError error);
protected:
QAmqpClient(QAmqpClientPrivate *dd, QObject *parent = 0);

View File

@ -16,7 +16,7 @@ private Q_SLOTS:
void connectDisconnect();
void invalidAuthenticationMechanism();
void tune();
void socketError();
void validateUri_data();
void validateUri();
@ -124,6 +124,14 @@ void tst_QAMQPClient::tune()
QVERIFY(waitForSignal(&client, SIGNAL(disconnected())));
}
void tst_QAMQPClient::socketError()
{
QAmqpClient client;
client.connectToHost("amqp://127.0.0.1:56725/");
QVERIFY(waitForSignal(&client, SIGNAL(socketError(QAbstractSocket::SocketError))));
QCOMPARE(client.socketError(), QAbstractSocket::ConnectionRefusedError);
}
void tst_QAMQPClient::validateUri_data()
{
QTest::addColumn<QString>("uri");