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:
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());
106const QString COperateRawStream::Id()
109 szId = COperate::Id();
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()) {
130 && (
GetParameter()->GetGlobalParameters()->GetNameStyles()
131 & CParameterPlugin::NameStyle::Protocol)
132 && !Protocol().isEmpty())
133 szName = Protocol() +
":";
134 szName += net.GetHost()
135 +
":" + QString::number(net.GetPort());
147 QString szDescription;
148 if(!
Name().isEmpty())
149 szDescription = tr(
"Name: ") +
Name() +
"\n";
151 if(!GetTypeName().isEmpty())
152 szDescription += tr(
"Type: ") + GetTypeName() +
"\n";
154 if(!Protocol().isEmpty()) {
155 szDescription += tr(
"Protocol: ") + Protocol();
157 if(!
GetPlugin()->DisplayName().isEmpty())
160 szDescription +=
"\n";
163 szDescription += tr(
"Raw stream type: ") + CParameterRawStream::GetTypeName(m_Parameter.GetType()) +
"\n";
165 if(CParameterRawStream::TYPE::TCP == m_Parameter.GetType()) {
166 auto &net = m_Parameter.m_Net;
167 if(!net.GetHost().isEmpty())
168 szDescription += tr(
"Server address: ") + net.GetHost()
169 +
":" + QString::number(net.GetPort()) +
"\n";
174 szDescription += tr(
"Security level: ");
175 if(!sl.GetUnicodeIcon().isEmpty())
176 szDescription += sl.GetUnicodeIcon() +
" ";
177 szDescription += sl.GetString() +
"\n";
183 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.
Terminal operate interface.
CStats * GetStats() override
Get statistics.
virtual const QString Name() override
Name.
virtual CParameterTerminalBase * GetParameter() const
Get parameters.
virtual CSecurityLevel::Levels GetSecurityLevel() const
Get Security Level.
void sigFinished()
Successful disconnection signal.
void sigRunning()
Start success signal.
void sigError(const int nError, const QString &szError)
Triggered when an error is generated.
Q_INVOKABLE CPlugin * GetPlugin() const
Get plugin.
CParameterPlugin * GetGlobalParameters()
Get CParameterPlugin.
virtual const QString DisplayName() const
The plugin display name.
virtual const QString Description() const =0
Plugin description.