allow access to socket state, enable low latency options

Provides an accessor and change signal for the state of QAmqpClients
internal ssl socket. This also defaults the internal socket to low
latency mode, as well as keep alive.
This commit is contained in:
Matt Broadstone 2015-03-04 17:51:57 -05:00
parent a4bc1b5f4e
commit 6cc9ee7457
2 changed files with 14 additions and 0 deletions

View File

@ -53,6 +53,9 @@ void QAmqpClientPrivate::initSocket()
{ {
Q_Q(QAmqpClient); Q_Q(QAmqpClient);
socket = new QSslSocket(q); socket = new QSslSocket(q);
socket->setSocketOption(QAbstractSocket::LowDelayOption, 1);
socket->setSocketOption(QAbstractSocket::KeepAliveOption, 1);
QObject::connect(socket, SIGNAL(connected()), q, SLOT(_q_socketConnected())); QObject::connect(socket, SIGNAL(connected()), q, SLOT(_q_socketConnected()));
QObject::connect(socket, SIGNAL(disconnected()), q, SLOT(_q_socketDisconnected())); QObject::connect(socket, SIGNAL(disconnected()), q, SLOT(_q_socketDisconnected()));
QObject::connect(socket, SIGNAL(readyRead()), q, SLOT(_q_readyRead())); QObject::connect(socket, SIGNAL(readyRead()), q, SLOT(_q_readyRead()));
@ -60,6 +63,8 @@ void QAmqpClientPrivate::initSocket()
q, SLOT(_q_socketError(QAbstractSocket::SocketError))); q, SLOT(_q_socketError(QAbstractSocket::SocketError)));
QObject::connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), QObject::connect(socket, SIGNAL(error(QAbstractSocket::SocketError)),
q, SIGNAL(socketError(QAbstractSocket::SocketError))); q, SIGNAL(socketError(QAbstractSocket::SocketError)));
QObject::connect(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)),
q, SIGNAL(socketStateChanged(QAbstractSocket::SocketState)));
QObject::connect(socket, SIGNAL(sslErrors(QList<QSslError>)), QObject::connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
q, SIGNAL(sslErrors(QList<QSslError>))); q, SIGNAL(sslErrors(QList<QSslError>)));
} }
@ -775,6 +780,12 @@ QAbstractSocket::SocketError QAmqpClient::socketError() const
return d->socket->error(); return d->socket->error();
} }
QAbstractSocket::SocketState QAmqpClient::socketState() const
{
Q_D(const QAmqpClient);
return d->socket->state();
}
QAMQP::Error QAmqpClient::error() const QAMQP::Error QAmqpClient::error() const
{ {
Q_D(const QAmqpClient); Q_D(const QAmqpClient);

View File

@ -84,6 +84,8 @@ public:
QString customProperty(const QString &name) const; QString customProperty(const QString &name) const;
QAbstractSocket::SocketError socketError() const; QAbstractSocket::SocketError socketError() const;
QAbstractSocket::SocketState socketState() const;
QAMQP::Error error() const; QAMQP::Error error() const;
QString errorString() const; QString errorString() const;
@ -107,6 +109,7 @@ Q_SIGNALS:
void disconnected(); void disconnected();
void error(QAMQP::Error error); void error(QAMQP::Error error);
void socketError(QAbstractSocket::SocketError error); void socketError(QAbstractSocket::SocketError error);
void socketStateChanged(QAbstractSocket::SocketState state);
void sslErrors(const QList<QSslError> &errors); void sslErrors(const QList<QSslError> &errors);
public Q_SLOTS: public Q_SLOTS: