diff --git a/Console/CMakeLists.txt b/Console/CMakeLists.txt index 31ccda5..7df87bf 100644 --- a/Console/CMakeLists.txt +++ b/Console/CMakeLists.txt @@ -12,8 +12,8 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Network) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Network) -add_executable(frelayConsole Console.h Console.cpp main.cpp ../Res/ico.rc) -target_link_libraries(frelayConsole PRIVATE Protocol Util) +add_executable(frelayConsole Console.h Console.cpp main.cpp Helper.h Helper.cpp ../Res/ico.rc) +target_link_libraries(frelayConsole PRIVATE Protocol Util ClientCore) if(NOT DEFINED COMPILER_USE_MINGW) target_link_libraries(frelayConsole PRIVATE crashelper) diff --git a/Console/Console.cpp b/Console/Console.cpp index 4a357f9..e224a00 100644 --- a/Console/Console.cpp +++ b/Console/Console.cpp @@ -1 +1,9 @@ -#include "Console.h" \ No newline at end of file +#include "Console.h" + +RelayConsole::RelayConsole(QObject* parent) : QObject(parent) +{ +} + +RelayConsole::~RelayConsole() +{ +} diff --git a/Console/Console.h b/Console/Console.h index 961c86d..60559a3 100644 --- a/Console/Console.h +++ b/Console/Console.h @@ -1,9 +1,15 @@ #ifndef FRELAY_CONSOLE_H #define FRELAY_CONSOLE_H -class RelayConsole -{ +#include +class RelayConsole : public QObject +{ + Q_OBJECT + +public: + RelayConsole(QObject* parent = nullptr); + ~RelayConsole() override; }; #endif // FRELAY_CONSOLE_H diff --git a/Console/Helper.cpp b/Console/Helper.cpp new file mode 100644 index 0000000..6b5ce1c --- /dev/null +++ b/Console/Helper.cpp @@ -0,0 +1,38 @@ +#include "Helper.h" + +ConsoleHelper::ConsoleHelper(QObject* parent) : QObject(parent) +{ +} + +ConsoleHelper::~ConsoleHelper() +{ +} + +void ConsoleHelper::RunWorker(ClientCore* clientCore) +{ + clientCore_ = clientCore; + + sockWorker_ = new SocketWorker(clientCore_, nullptr); + clientCore_->moveToThread(sockWorker_); + + connect(clientCore_, &ClientCore::conSuccess, this, [this]() { qInfo() << QString(tr("Connected.")); }); + connect(clientCore_, &ClientCore::conFailed, this, [this]() { qInfo() << QString(tr("Connect failed.")); }); + connect(clientCore_, &ClientCore::connecting, this, [this]() { qInfo() << QString(tr("Connecting...")); }); + connect(clientCore_, &ClientCore::sigDisconnect, this, [this]() { qInfo() << QString(tr("Disconnected.")); }); + connect(this, &ConsoleHelper::sigDoConnect, clientCore_, &ClientCore::DoConnect); + connect(sockWorker_, &QThread::finished, sockWorker_, &QObject::deleteLater); + + sockWorker_->start(); +} + +void ConsoleHelper::SetIpPort(const QString& ip, quint16 port) +{ + ip_ = ip; + port_ = port; + qDebug() << "SetIpPort:" << ip_ << port_; +} + +void ConsoleHelper::Connect() +{ + emit sigDoConnect(ip_, port_); +} diff --git a/Console/Helper.h b/Console/Helper.h new file mode 100644 index 0000000..6403920 --- /dev/null +++ b/Console/Helper.h @@ -0,0 +1,29 @@ +#ifndef CONSOLE_HELPER_H +#define CONSOLE_HELPER_H + +#include + +class ConsoleHelper : public QObject +{ + Q_OBJECT + +public: + ConsoleHelper(QObject* parent = nullptr); + ~ConsoleHelper() override; + +public: + void RunWorker(ClientCore* clientCore); + void SetIpPort(const QString& ip, quint16 port); + void Connect(); + +signals: + void sigDoConnect(const QString& ip, quint16 port); + +private: + QString ip_; + quint16 port_{}; + SocketWorker* sockWorker_{}; + ClientCore* clientCore_; +}; + +#endif // CONSOLE_HELPER_H \ No newline at end of file diff --git a/Console/main.cpp b/Console/main.cpp index e044bf6..4dd8d9a 100644 --- a/Console/main.cpp +++ b/Console/main.cpp @@ -2,6 +2,7 @@ #include #include "Console.h" +#include "Helper.h" #ifndef COMPILER_USE_MINGW #include @@ -9,6 +10,10 @@ int main(int argc, char* argv[]) { + if (argc < 3) { + std::cerr << "Usage arg is ip port." << std::endl; + return 0; + } #ifndef COMPILER_USE_MINGW auto configDir = Util::GetCurConfigPath("frelay"); @@ -25,5 +30,12 @@ int main(int argc, char* argv[]) Util::InitLogger("frelayConsole.log", "frelayConsole"); qInstallMessageHandler(Util::ConsoleMsgHander); + auto* core = new ClientCore(); + auto* helper = new ConsoleHelper(); + + helper->SetIpPort(argv[1], QString("%1").arg(argv[2]).toInt()); + helper->RunWorker(core); + helper->Connect(); + return app.exec(); } \ No newline at end of file