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