From d493203b20ea3c8bf43cd72490e2b93ee6d01055 Mon Sep 17 00:00:00 2001 From: EndrII Date: Wed, 13 Oct 2021 21:35:54 +0300 Subject: [PATCH] fix echo --- Patronum/src/PController.cpp | 2 ++ Patronum/src/Private/controllerprivate.cpp | 5 +++++ Patronum/src/Private/controllerprivate.h | 2 ++ Patronum/src/Private/isocketwraper.cpp | 11 +++++++++++ Patronum/src/Private/isocketwraper.h | 6 +++++- Patronum/src/Private/localsocket.cpp | 5 ++++- 6 files changed, 29 insertions(+), 2 deletions(-) diff --git a/Patronum/src/PController.cpp b/Patronum/src/PController.cpp index a8493c7..bb64366 100644 --- a/Patronum/src/PController.cpp +++ b/Patronum/src/PController.cpp @@ -94,6 +94,8 @@ bool Controller::sendStop() { if (!d_ptr) return false; + d_ptr->setEcho(false); + if (!d_ptr->connectToHost(false)) { return false; } diff --git a/Patronum/src/Private/controllerprivate.cpp b/Patronum/src/Private/controllerprivate.cpp index 7cbe476..d7ced0e 100644 --- a/Patronum/src/Private/controllerprivate.cpp +++ b/Patronum/src/Private/controllerprivate.cpp @@ -104,6 +104,11 @@ bool ControllerPrivate::connectToHost(bool echo) const { return true; } +void ControllerPrivate::setEcho(bool echo) { + if (_socket) + _socket->setEcho(echo); +} + void ControllerPrivate::handleReceve(QByteArray data) { if (!_controller) { diff --git a/Patronum/src/Private/controllerprivate.h b/Patronum/src/Private/controllerprivate.h index 9bc6778..854d82d 100644 --- a/Patronum/src/Private/controllerprivate.h +++ b/Patronum/src/Private/controllerprivate.h @@ -32,6 +32,8 @@ public: bool isConnected() const; bool connectToHost(bool echo = true) const; + void setEcho(bool echo); + signals: void sigListFeatures(QList); diff --git a/Patronum/src/Private/isocketwraper.cpp b/Patronum/src/Private/isocketwraper.cpp index a6ac7ec..a1b088a 100644 --- a/Patronum/src/Private/isocketwraper.cpp +++ b/Patronum/src/Private/isocketwraper.cpp @@ -9,8 +9,19 @@ namespace Patronum { +ISocketWraper::ISocketWraper(){ +} + State ISocketWraper::state() const { return m_state; } +bool ISocketWraper::echo() const { + return _echo; +} + +void ISocketWraper::setEcho(bool newEcho) { + _echo = newEcho; +} + } diff --git a/Patronum/src/Private/isocketwraper.h b/Patronum/src/Private/isocketwraper.h index 27f72f1..e00c1a5 100644 --- a/Patronum/src/Private/isocketwraper.h +++ b/Patronum/src/Private/isocketwraper.h @@ -21,7 +21,7 @@ enum class State: int { class ISocketWraper { public: - ISocketWraper(){}; + ISocketWraper(); /** * @brief send - send data to service * @param data @@ -68,8 +68,12 @@ public: State state() const; + bool echo() const; + void setEcho(bool newEcho); + protected: State m_state = State::Disconeccted; + bool _echo = true; }; diff --git a/Patronum/src/Private/localsocket.cpp b/Patronum/src/Private/localsocket.cpp index 7eaa250..b36709c 100644 --- a/Patronum/src/Private/localsocket.cpp +++ b/Patronum/src/Private/localsocket.cpp @@ -15,7 +15,7 @@ namespace Patronum { LocalSocket::LocalSocket(const QString &target, QObject *ptr): - QObject(ptr) { + QObject(ptr), ISocketWraper() { m_target = "P" + target; } @@ -132,6 +132,9 @@ void LocalSocket::handleIncomming() { void LocalSocket::handleSocketError(QLocalSocket::LocalSocketError) { + if (!_echo) + return; + auto _sender = dynamic_cast(sender()); if (!_sender) {