[*] fix reconnection
This commit is contained in:
parent
8cd2702641
commit
8fb83ba1a4
|
|
@ -114,7 +114,10 @@ void ClientPrivate::parseCnnString( const QUrl & con )
|
||||||
|
|
||||||
void ClientPrivate::sockConnect()
|
void ClientPrivate::sockConnect()
|
||||||
{
|
{
|
||||||
disconnect();
|
if(network_->state() != QAbstractSocket::UnconnectedState )
|
||||||
|
{
|
||||||
|
disconnect();
|
||||||
|
}
|
||||||
network_->connectTo(host, port);
|
network_->connectTo(host, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -130,7 +133,7 @@ Exchange * ClientPrivate::createExchange(int channelNumber, const QString &name
|
||||||
exchange_, SLOT(_q_method(const QAMQP::Frame::Method &)));
|
exchange_, SLOT(_q_method(const QAMQP::Frame::Method &)));
|
||||||
|
|
||||||
QObject::connect(connection_, SIGNAL(connected()), exchange_, SLOT(_q_open()));
|
QObject::connect(connection_, SIGNAL(connected()), exchange_, SLOT(_q_open()));
|
||||||
QObject::connect(connection_, SIGNAL(disconnected()), exchange_, SLOT(_q_disconnected()));
|
QObject::connect(pq_func(), SIGNAL(disconnected()), exchange_, SLOT(_q_disconnected()));
|
||||||
exchange_->setName(name);
|
exchange_->setName(name);
|
||||||
return exchange_;
|
return exchange_;
|
||||||
}
|
}
|
||||||
|
|
@ -148,6 +151,7 @@ Queue * ClientPrivate::createQueue(int channelNumber, const QString &name )
|
||||||
queue_, SLOT(_q_body(int, const QByteArray &)));
|
queue_, SLOT(_q_body(int, const QByteArray &)));
|
||||||
|
|
||||||
QObject::connect(connection_, SIGNAL(connected()), queue_, SLOT(_q_open()));
|
QObject::connect(connection_, SIGNAL(connected()), queue_, SLOT(_q_open()));
|
||||||
|
QObject::connect(pq_func(), SIGNAL(disconnected()), queue_, SLOT(_q_disconnected()));
|
||||||
queue_->setName(name);
|
queue_->setName(name);
|
||||||
return queue_;
|
return queue_;
|
||||||
}
|
}
|
||||||
|
|
@ -155,12 +159,16 @@ Queue * ClientPrivate::createQueue(int channelNumber, const QString &name )
|
||||||
|
|
||||||
void ClientPrivate::disconnect()
|
void ClientPrivate::disconnect()
|
||||||
{
|
{
|
||||||
network_->QAMQP::Network::disconnect();
|
P_Q(QAMQP::Client);
|
||||||
|
//connection_->close();
|
||||||
|
if(network_->state() != QAbstractSocket::UnconnectedState)
|
||||||
|
{
|
||||||
|
network_->QAMQP::Network::disconnect();
|
||||||
|
connection_->pd_func()->connected = false;
|
||||||
|
emit pq_func()->disconnected();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -185,6 +185,7 @@ void ConnectionPrivate::close( const QAMQP::Frame::Method & frame )
|
||||||
qDebug(">> class-id: %d", classId);
|
qDebug(">> class-id: %d", classId);
|
||||||
qDebug(">> method-id: %d", methodId);
|
qDebug(">> method-id: %d", methodId);
|
||||||
connected = false;
|
connected = false;
|
||||||
|
client_->pd_func()->network_->error(QAbstractSocket::RemoteHostClosedError);
|
||||||
QMetaObject::invokeMethod(pq_func(), "disconnected");
|
QMetaObject::invokeMethod(pq_func(), "disconnected");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ void QAMQP::Network::disconnect()
|
||||||
{
|
{
|
||||||
connect_ = false;
|
connect_ = false;
|
||||||
if(socket_)
|
if(socket_)
|
||||||
socket_->abort();
|
socket_->close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QAMQP::Network::error( QAbstractSocket::SocketError socketError )
|
void QAMQP::Network::error( QAbstractSocket::SocketError socketError )
|
||||||
|
|
@ -70,6 +70,9 @@ void QAMQP::Network::error( QAbstractSocket::SocketError socketError )
|
||||||
case QAbstractSocket::RemoteHostClosedError:
|
case QAbstractSocket::RemoteHostClosedError:
|
||||||
case QAbstractSocket::SocketTimeoutError:
|
case QAbstractSocket::SocketTimeoutError:
|
||||||
case QAbstractSocket::NetworkError:
|
case QAbstractSocket::NetworkError:
|
||||||
|
case QAbstractSocket::ProxyConnectionClosedError:
|
||||||
|
case QAbstractSocket::ProxyConnectionRefusedError:
|
||||||
|
case QAbstractSocket::ProxyConnectionTimeoutError:
|
||||||
if( autoReconnect_ && connect_ )
|
if( autoReconnect_ && connect_ )
|
||||||
{
|
{
|
||||||
QTimer::singleShot(timeOut_, this, SLOT(connectTo()));
|
QTimer::singleShot(timeOut_, this, SLOT(connectTo()));
|
||||||
|
|
@ -77,6 +80,7 @@ void QAMQP::Network::error( QAbstractSocket::SocketError socketError )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
qWarning() << "AMQP Socket Error: " << socket_->errorString();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -210,3 +214,8 @@ void QAMQP::Network::setAutoReconnect( bool value )
|
||||||
{
|
{
|
||||||
autoReconnect_ = value;
|
autoReconnect_ = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QAbstractSocket::SocketState QAMQP::Network::state() const
|
||||||
|
{
|
||||||
|
return socket_->state();
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,8 +30,11 @@ namespace QAMQP
|
||||||
bool autoReconnect() const;
|
bool autoReconnect() const;
|
||||||
void setAutoReconnect(bool value);
|
void setAutoReconnect(bool value);
|
||||||
|
|
||||||
|
QAbstractSocket::SocketState state() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void connectTo(const QString & host = QString(), quint32 port = 0);
|
void connectTo(const QString & host = QString(), quint32 port = 0);
|
||||||
|
void error( QAbstractSocket::SocketError socketError );
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void connected();
|
void connected();
|
||||||
|
|
@ -40,8 +43,7 @@ namespace QAMQP
|
||||||
void content(const QAMQP::Frame::Content & content);
|
void content(const QAMQP::Frame::Content & content);
|
||||||
void body(int channeNumber, const QByteArray & body);
|
void body(int channeNumber, const QByteArray & body);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void error( QAbstractSocket::SocketError socketError );
|
|
||||||
void readyRead();
|
void readyRead();
|
||||||
void sslErrors ( const QList<QSslError> & errors );
|
void sslErrors ( const QList<QSslError> & errors );
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue