summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2015-08-19 11:46:18 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2015-08-19 11:46:18 +0300
commitc83c19a7d93ee77617c6e47bf0700346545b4611 (patch)
tree7c4413e8a6e54be1700b1439819316765b64abac
parent8c24fe5997591ac4925736d68636b98edf021f43 (diff)
client-qt:
basic connection state display initial server message handler
-rw-r--r--client-qt/udm-client-qt/client_session.cpp8
-rw-r--r--client-qt/udm-client-qt/main.cpp6
-rw-r--r--client-qt/udm-client-qt/udm_main.cpp54
-rw-r--r--client-qt/udm-client-qt/udm_main.h8
-rw-r--r--server/udm-server.cbp1
5 files changed, 74 insertions, 3 deletions
diff --git a/client-qt/udm-client-qt/client_session.cpp b/client-qt/udm-client-qt/client_session.cpp
index 2069b73..45e93b9 100644
--- a/client-qt/udm-client-qt/client_session.cpp
+++ b/client-qt/udm-client-qt/client_session.cpp
@@ -24,6 +24,10 @@
#include <boost/log/trivial.hpp>
#include <openssl/sha.h>
+#include <QMetaType>
+Q_DECLARE_METATYPE(server_msg);
+int shit = qRegisterMetaType <server_msg> ("server_msg");
+
std::shared_ptr<char*> pack_data(const std::string &buf, int *size_)
{
BOOST_LOG_TRIVIAL(debug)<<__FILE__<<":"<<__LINE__<<"\t"<<__func__;
@@ -209,13 +213,13 @@ void client_session::handle_connect(const boost::system::error_code &e)
if(e)
{
//TODO: settings for reconnect count and timeout
- emit client_connected(false, QString::fromStdString(e.message()));
+ emit client_connected(false, QString::fromUtf8(e.message().c_str()));
BOOST_LOG_TRIVIAL(error)<<__FILE__<<":"<<__LINE__<<"\t"<<typeid(this).name()<<"::"<<__func__<<"\terror: "<<e.message();
delete this; //suicide
}
else
{
- emit client_connected(true, QString::fromStdString(e.message()));
+ emit client_connected(true, QString::fromUtf8(e.message().c_str()));
//TODO: something better ?
{// for now hust send auth request message
client_msg msg;
diff --git a/client-qt/udm-client-qt/main.cpp b/client-qt/udm-client-qt/main.cpp
index 357777e..604bdae 100644
--- a/client-qt/udm-client-qt/main.cpp
+++ b/client-qt/udm-client-qt/main.cpp
@@ -21,10 +21,16 @@
#include "udm_main.h"
#include <QApplication>
+#include <QTranslator>
+
int main(int argc, char *argv[])
{
+ //TODO: load translations
+
QApplication a(argc, argv);
+ QTranslator udm_trans;
+ a.installTranslator(&udm_trans);
udm_main w;
w.show();
diff --git a/client-qt/udm-client-qt/udm_main.cpp b/client-qt/udm-client-qt/udm_main.cpp
index f85dc5d..0089a45 100644
--- a/client-qt/udm-client-qt/udm_main.cpp
+++ b/client-qt/udm-client-qt/udm_main.cpp
@@ -22,10 +22,14 @@
#include "udm_main.h"
#include <QMenuBar>
#include <QThread>
+#include <QMessageBox>
+#include <QStatusBar>
+#include <QLabel>
#include "connect_widget.h"
#include "client_session.h"
+
udm_main::udm_main(QWidget *parent)
: QMainWindow(parent)
{
@@ -34,6 +38,9 @@ udm_main::udm_main(QWidget *parent)
connect(action_connect, SIGNAL(triggered()), this, SLOT(show_connect_widget()));
auto action_exit = menu_main->addAction(tr("Exit"));
connect(action_exit, SIGNAL(triggered(bool)), this, SLOT(close())); //TODO: something better
+ lbl_state = new QLabel;
+ lbl_state->setText(tr("State") + ": " + tr("Offline"));
+ this->statusBar()->addPermanentWidget(lbl_state);
}
udm_main::~udm_main()
@@ -55,6 +62,8 @@ void udm_main::client_pre_connect_init()
thread_client_session = new QThread(this);
io_service_ = new boost::asio::io_service;
session = new client_session(0, io_service_); //parent must be 0 here
+ connect(session, SIGNAL(server_message_received(server_msg)), this, SLOT(server_message_received(server_msg)));
+ connect(session, SIGNAL(client_connected(bool,QString)), this, SLOT(client_connected(bool,QString)));
}
void udm_main::client_connect_finalize()
{
@@ -78,3 +87,48 @@ void udm_main::client_connect_ssl(QString &host, QString &password, int port, QS
client_connect_finalize();
emit connect_signal_ssl(host, password, port, ssl_ca, ssl_crt, ssl_key);
}
+
+void udm_main::server_message_received(server_msg msg)
+{
+ switch(msg.type())
+ {
+ case SERVER_MSG_TYPE::SERVER_AUTH_REPLY:
+ {
+ if(msg.auth_reply().status())
+ {
+ auth_token = msg.auth_reply().auth_token().c_str();
+ //TODO: update client status
+ lbl_state->setText(tr("State") + ": " + tr("Connected") + ", " + tr("Authenticated"));
+ }
+ else
+ {
+ QMessageBox msg_box;
+ msg_box.setText(tr("Authentication failed with error:") + "\n" + msg.auth_reply().error_description().c_str());
+ msg_box.exec();
+ lbl_state->setText(tr("State") + ": " + tr("auth error"));
+ }
+
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void udm_main::client_connected(bool success, QString error_text)
+{
+ if(!success)
+ {
+ QMessageBox msg;
+ msg.setText(tr("client connection error with error:") + error_text);
+ msg.exec();
+ lbl_state->setText(tr("State") + ": " + tr("Connection error"));
+ }
+ else
+ {
+ lbl_state->setText(tr("State") + ": " + tr("Connected"));
+ }
+/* QMessageBox msg;
+ msg.setText(success?"client connected with message:":"client connection error with error:" + error_text);
+ msg.exec(); */
+}
diff --git a/client-qt/udm-client-qt/udm_main.h b/client-qt/udm-client-qt/udm_main.h
index 2964e55..8861403 100644
--- a/client-qt/udm-client-qt/udm_main.h
+++ b/client-qt/udm-client-qt/udm_main.h
@@ -25,7 +25,10 @@
#include <QMainWindow>
+#include "../../protocol/udm.pb.h"
+
class client_session;
+class QLabel;
namespace boost {
namespace asio {
@@ -47,6 +50,8 @@ public slots:
void show_connect_widget();
void client_connect(QString &host, QString &password, int port);
void client_connect_ssl(QString &host, QString &password, int port, QString &ssl_ca, QString &ssl_crt, QString &ssl_key);
+ void server_message_received(server_msg msg);
+ void client_connected(bool success, QString error_text);
signals:
void connect_signal(QString host, QString password, int port);
void connect_signal_ssl(QString host, QString password, int port, QString ssl_ca, QString ssl_crt, QString ssl_key);
@@ -56,7 +61,8 @@ private:
QThread *thread_client_session;
client_session *session;
boost::asio::io_service *io_service_;
-
+ QString auth_token;
+ QLabel *lbl_state;
};
#endif // UDM_MAIN_H
diff --git a/server/udm-server.cbp b/server/udm-server.cbp
index 159c144..0d79409 100644
--- a/server/udm-server.cbp
+++ b/server/udm-server.cbp
@@ -11,6 +11,7 @@
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
+ <Option parameters="--run" />
<Compiler>
<Add option="-g" />
<Add directory="include" />