diff options
Diffstat (limited to 'client-qt')
-rw-r--r-- | client-qt/udm-client-qt/client_session.cpp | 38 | ||||
-rw-r--r-- | client-qt/udm-client-qt/client_session.h | 33 | ||||
-rw-r--r-- | client-qt/udm-client-qt/udm-client-qt.pro | 12 |
3 files changed, 80 insertions, 3 deletions
diff --git a/client-qt/udm-client-qt/client_session.cpp b/client-qt/udm-client-qt/client_session.cpp new file mode 100644 index 0000000..ed22fad --- /dev/null +++ b/client-qt/udm-client-qt/client_session.cpp @@ -0,0 +1,38 @@ +#include "client_session.h" +#include <boost/bind.hpp> +#include <boost/log/trivial.hpp> + +client_session::client_session(QObject *parent, boost::asio::io_service *io_service) : QObject(parent), io_service_(*io_service), socket_(*io_service) +{ + +} + + +tcp::socket& client_session::socket() +{ + return socket_; +} + +void client_session::connect(std::string &host, int port) +{ + //TODO: settings for connection timeout + boost::asio::ip::tcp::resolver r(io_service_); + boost::asio::ip::tcp::endpoint ep; + ep.port(port); + ep.address(boost::asio::ip::address::from_string(host)); + socket_.async_connect(ep, boost::bind(&client_session::connect_handler, this, boost::asio::placeholders::error)); +} + +void client_session::connect_handler(const boost::system::error_code &e) +{ + BOOST_LOG_TRIVIAL(debug)<<__FILE__<<":"<<__LINE__<<"\t"<<typeid(this).name()<<"::"<<__func__; + if(e) + { + //TODO: settings for reconnect count and timeout + BOOST_LOG_TRIVIAL(error)<<__FILE__<<":"<<__LINE__<<"\t"<<typeid(this).name()<<"::"<<__func__<<"\terror: "<<e.message(); + } + else + { + //TODO: succesfule connection event + } +} diff --git a/client-qt/udm-client-qt/client_session.h b/client-qt/udm-client-qt/client_session.h new file mode 100644 index 0000000..0e90d8a --- /dev/null +++ b/client-qt/udm-client-qt/client_session.h @@ -0,0 +1,33 @@ +#ifndef CLIENT_SESSION_H +#define CLIENT_SESSION_H + + +//boost.asio here, yes i know about qtnetwork, but i have more exp with boost asio + +#include <boost/asio.hpp> +#include <QObject> + + + +using boost::asio::ip::tcp; + +class client_session : public QObject +{ + Q_OBJECT +public: + explicit client_session(QObject *parent = 0, boost::asio::io_service *io_service = nullptr); + + tcp::socket& socket(); + +signals: + +public slots: + void connect(std::string &host, int port); +private: + void connect_handler(const boost::system::error_code &error); + char *recv_data_; + boost::asio::io_service &io_service_; + tcp::socket socket_; +}; + +#endif // CLIENT_SESSION_H diff --git a/client-qt/udm-client-qt/udm-client-qt.pro b/client-qt/udm-client-qt/udm-client-qt.pro index ce81c93..d1ad0cd 100644 --- a/client-qt/udm-client-qt/udm-client-qt.pro +++ b/client-qt/udm-client-qt/udm-client-qt.pro @@ -6,13 +6,19 @@ QT += core gui +QMAKE_CXXFLAGS += -std=c++11 +QMAKE_CFLAGS += -std=c++11 +DEFINES += BOOST_LOG_DYN_LINK + greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = udm-client-qt TEMPLATE = app - +unix:LIBS += -lboost_system -lboost_thread -lboost_log -lpthread SOURCES += main.cpp\ - udm_main.cpp + udm_main.cpp \ + client_session.cpp -HEADERS += udm_main.h +HEADERS += udm_main.h \ + client_session.h |