Handle invalid IP address

This commit is contained in:
michal.szwaj 2018-03-22 17:12:37 +01:00
parent f77cbca876
commit 991f31bc77
2 changed files with 27 additions and 15 deletions

View File

@ -28,13 +28,14 @@ public:
signals: signals:
void connectToDevice(const QString& ipAddress); void connectToDevice(const QString& ipAddress);
void connectionSucceed(aasdk::tcp::ITCPEndpoint::SocketPointer socket); void connectionSucceed(aasdk::tcp::ITCPEndpoint::SocketPointer socket);
void connectionFailed(); void connectionFailed(const QString& message);
private slots: private slots:
void onConnectButtonClicked(); void onConnectButtonClicked();
void onConnectionFailed(); void onConnectionFailed(const QString& message);
void onConnectionSucceed(); void onConnectionSucceed();
void setControlsEnabledStatus(bool status); void setControlsEnabledStatus(bool status);
void connectHandler(const boost::system::error_code& ec, aasdk::tcp::ITCPEndpoint::SocketPointer socket);
private: private:
boost::asio::io_service& ioService_; boost::asio::io_service& ioService_;

View File

@ -37,17 +37,28 @@ void ConnectDialog::onConnectButtonClicked()
const auto& ipAddress = ui_->lineEditIPAddress->text().toStdString(); const auto& ipAddress = ui_->lineEditIPAddress->text().toStdString();
auto socket = std::make_shared<boost::asio::ip::tcp::socket>(ioService_); auto socket = std::make_shared<boost::asio::ip::tcp::socket>(ioService_);
tcpWrapper_.asyncConnect(*socket, ipAddress, 5277, [this, socket](auto ec) mutable {
if(!ec) try
{ {
emit connectionSucceed(std::move(socket)); tcpWrapper_.asyncConnect(*socket, ipAddress, 5277, std::bind(&ConnectDialog::connectHandler, this, std::placeholders::_1, socket));
this->close(); }
} catch(const boost::system::system_error& se)
else {
{ emit connectionFailed(QString(se.what()));
emit connectionFailed(); }
} }
});
void ConnectDialog::connectHandler(const boost::system::error_code& ec, aasdk::tcp::ITCPEndpoint::SocketPointer socket)
{
if(!ec)
{
emit connectionSucceed(std::move(socket));
this->close();
}
else
{
emit connectionFailed(QString::fromStdString(ec.message()));
}
} }
void ConnectDialog::onConnectionSucceed() void ConnectDialog::onConnectionSucceed()
@ -55,11 +66,11 @@ void ConnectDialog::onConnectionSucceed()
this->setControlsEnabledStatus(true); this->setControlsEnabledStatus(true);
} }
void ConnectDialog::onConnectionFailed() void ConnectDialog::onConnectionFailed(const QString& message)
{ {
this->setControlsEnabledStatus(true); this->setControlsEnabledStatus(true);
QMessageBox errorMessage(QMessageBox::Critical, "Error", "Connection failed.", QMessageBox::Ok); QMessageBox errorMessage(QMessageBox::Critical, "Connect error", message, QMessageBox::Ok);
errorMessage.setWindowFlags(Qt::WindowStaysOnTopHint); errorMessage.setWindowFlags(Qt::WindowStaysOnTopHint);
errorMessage.exec(); errorMessage.exec();
} }