3#include <QLoggingCategory>
4#include "OperateRawStream.h"
5#include "DlgSettingsRawStream.h"
8static Q_LOGGING_CATEGORY(log,
"RawStream.Operate")
13 SetParameter(&m_Parameter);
16COperateRawStream::~COperateRawStream()
29int COperateRawStream::Start()
34 slotUpdateParameter(
this);
37 check = connect(m_pTerminal, &QTermWidget::sendData,
38 this, [&](
const char* buf,
int len){
39 if(!m_TcpSocket.isOpen())
return;
40 QByteArray data(buf, len);
43 switch(m_Parameter.GetType()) {
44 case CParameterRawStream::TYPE::TCP:
45 nLen = m_TcpSocket.write(data);
47 case CParameterRawStream::TYPE::NamePipe:
51 GetStats()->AddSends(nLen);
55 check = connect(&m_TcpSocket, SIGNAL(connected()),
58 check = connect(&m_TcpSocket, SIGNAL(readyRead()),
59 this, SLOT(slotReadyRead()));
61 check = connect(&m_TcpSocket, &QTcpSocket::errorOccurred,
62 this, [&](QAbstractSocket::SocketError error) {
63 qCritical(log) << m_TcpSocket.errorString() << error;
64 if(m_TcpSocket.isOpen())
65 emit
sigError(error, m_TcpSocket.errorString());
69 switch(m_Parameter.GetType()) {
70 case CParameterRawStream::TYPE::TCP: {
71 auto &net = m_Parameter.m_Net;
72 m_TcpSocket.connectToHost(net.GetHost(), net.GetPort());
75 case CParameterRawStream::TYPE::NamePipe:
81 m_pTerminal->startTerminalTeletype();
86int COperateRawStream::Stop()
96void COperateRawStream::slotReadyRead()
98 if(!m_TcpSocket.isOpen())
100 auto data = m_TcpSocket.readAll();
102 GetStats()->AddReceives(data.length());
103 WriteTerminal(data.data(), data.length());
110 if(CParameterRawStream::TYPE::TCP == m_Parameter.GetType()) {
111 auto &net = m_Parameter.m_Net;
112 if(!net.GetHost().isEmpty())
113 szId +=
"_" + net.GetHost()
114 +
"_" + QString::number(net.GetPort());
116 static QRegularExpression exp(
"[-@:/#%!^&* \\.]");
117 szId = szId.replace(exp,
"_");
123 QString szName = m_Parameter.GetName();
125 if(szName.isEmpty()) {
126 if(CParameterRawStream::TYPE::TCP == m_Parameter.GetType()) {
127 auto &net = m_Parameter.m_Net;
128 if(!net.GetHost().isEmpty()) {
133 szName += net.GetHost()
134 +
":" + QString::number(net.GetPort());
146 QString szDescription;
147 if(!
Name().isEmpty())
148 szDescription = tr(
"Name: ") +
Name() +
"\n";
151 szDescription += tr(
"Type: ") +
GetTypeName() +
"\n";
154 szDescription += tr(
"Protocol: ") +
Protocol();
156 if(!
GetPlugin()->DisplayName().isEmpty())
159 szDescription +=
"\n";
162 szDescription += tr(
"Raw stream type: ") + CParameterRawStream::GetTypeName(m_Parameter.GetType()) +
"\n";
164 if(CParameterRawStream::TYPE::TCP == m_Parameter.GetType()) {
165 auto &net = m_Parameter.m_Net;
166 if(!net.GetHost().isEmpty())
167 szDescription += tr(
"Server address: ") + net.GetHost()
168 +
":" + QString::number(net.GetPort()) +
"\n";
171 if(GetSecurityLevel() != SecurityLevel::No)
172 szDescription += tr(
"Security level: ") + GetSecurityLevelString() +
"\n";
177 return szDescription;
const QString Description() override
Description.
virtual QDialog * OnOpenDialogSettings(QWidget *parent) override
Open settgins dialog.
virtual CBackend * InstanceBackend() override
New CBackend.
const QString Name() override
Name.
const QString Id() override
Identity.
Terminal operate interface.
virtual const QString Name() override
Name.
void sigFinished()
Successful disconnection signal.
void sigRunning()
Start success signal.
void sigError(const int nError, const QString &szError)
Triggered when an error is generated.
virtual const QString Protocol() const
Protocol.
Q_INVOKABLE CPlugin * GetPlugin() const
Get plugin.
virtual const QString Id()
Identity.
virtual const QString GetTypeName() const
Get type name.
CParameterPlugin * GetGlobalParameters()
Get CParameterPlugin.
virtual const QString DisplayName() const
The plugin display name.
virtual const QString Description() const =0
Plugin description.